Authored by QC-L

1. 修正 request 在无网络情况下的问题 2. 修正 request 返回的 data 内容,添加 data.code 相关的判断 3. 异常处理相关 review by 黄敬囿

@@ -2,7 +2,6 @@ import getPrivateKey from './getPrivateKey' @@ -2,7 +2,6 @@ import getPrivateKey from './getPrivateKey'
2 import config from '../../config.js' 2 import config from '../../config.js'
3 import trimObject from './utils/trimObject.js' 3 import trimObject from './utils/trimObject.js'
4 import queryString from './utils/query-string/query-string.js' 4 import queryString from './utils/query-string/query-string.js'
5 -import objectAssign from './utils/query-string/object-assign.js'  
6 const crypto = require('./utils/cryptojs/cryptojs.js'); 5 const crypto = require('./utils/cryptojs/cryptojs.js');
7 import MD5 from './utils/md5/md5.js' 6 import MD5 from './utils/md5/md5.js'
8 7
@@ -109,10 +108,9 @@ const _signParam = (params, encode = false) => { @@ -109,10 +108,9 @@ const _signParam = (params, encode = false) => {
109 const _signResultParams = (params, encode = false) => { 108 const _signResultParams = (params, encode = false) => {
110 let allParams = trimObject(params); // 去除首尾空格 109 let allParams = trimObject(params); // 去除首尾空格
111 let paramsPair = queryString.stringify(allParams, { encode: false }); 110 let paramsPair = queryString.stringify(allParams, { encode: false });
112 - console.log(paramsPair);  
113 let client_secret = MD5(paramsPair); 111 let client_secret = MD5(paramsPair);
114 delete allParams.private_key; 112 delete allParams.private_key;
115 - const resultParams = objectAssign(allParams, { client_secret }); 113 + const resultParams = Object.assign(allParams, { client_secret });
116 return resultParams; 114 return resultParams;
117 } 115 }
118 116
@@ -125,7 +123,10 @@ const handleHeader = (options, newParams) => { @@ -125,7 +123,10 @@ const handleHeader = (options, newParams) => {
125 p2SecretKey = getYHStorageSync("p2SecretKey", 'request') 123 p2SecretKey = getYHStorageSync("p2SecretKey", 'request')
126 } 124 }
127 let param = _signParam(newParams, false); 125 let param = _signParam(newParams, false);
128 - let resultString = crypto.HMAC(crypto.SHA256, param, p2SecretKey, "") 126 + let resultString = ''
  127 + if (p2SecretKey) {
  128 + resultString = crypto.HMAC(crypto.SHA256, param, p2SecretKey, "")
  129 + }
129 const session_key = newParams.session_key ? newParams.session_key : ''; 130 const session_key = newParams.session_key ? newParams.session_key : '';
130 let header = { 131 let header = {
131 'x-yoho-verify': resultString, 132 'x-yoho-verify': resultString,
@@ -158,11 +159,10 @@ const sendRequest = (resolve, reject, options) => { @@ -158,11 +159,10 @@ const sendRequest = (resolve, reject, options) => {
158 const statusCode = res.statusCode; 159 const statusCode = res.statusCode;
159 const errMsg = res.errMsg; 160 const errMsg = res.errMsg;
160 const data = res.data; 161 const data = res.data;
161 -  
162 - if (statusCode == 200) {  
163 - resolve(data); 162 + if (data && data.code == 200 && data.data) {
  163 + resolve(data.data);
164 } else { 164 } else {
165 - const code = statusCode; 165 + const code = res.statusCode;
166 const message = res.errMsg ? res.errMsg : ''; 166 const message = res.errMsg ? res.errMsg : '';
167 reject({ code, message }); 167 reject({ code, message });
168 } 168 }
@@ -28,7 +28,7 @@ export default class BaseService { @@ -28,7 +28,7 @@ export default class BaseService {
28 }).then(data => { 28 }).then(data => {
29 return data; 29 return data;
30 }).catch(error => { 30 }).catch(error => {
31 - return error; 31 + throw error;
32 }) 32 })
33 } 33 }
34 } 34 }
@@ -25,21 +25,12 @@ Page({ @@ -25,21 +25,12 @@ Page({
25 this.data.api.getHomePageList({page: 1, limit: 20}, () => { 25 this.data.api.getHomePageList({page: 1, limit: 20}, () => {
26 wx.hideLoading(); 26 wx.hideLoading();
27 }).then(data => { 27 }).then(data => {
  28 + // 此处 data 为 response 中的 data.data
28 console.log(data); 29 console.log(data);
29 - })  
30 - // GET({  
31 - // url: config.domains.api,  
32 - // path: '/resources',  
33 - // params: {  
34 - // method: 'ufo.product.search.list',  
35 - // page: 1,  
36 - // limit: 20  
37 - // }  
38 - // }).then(data => {  
39 - // console.log(data);  
40 - // }).catch(error => {  
41 - // console.error(error);  
42 - // }) 30 + }).catch(error => {
  31 + // 此处会抛出响应码非 200 的情况
  32 + console.log(error);
  33 + });
43 }, 34 },
44 35
45 /** 36 /**
@@ -16,7 +16,8 @@ export default class NativeTestService extends BaseService { @@ -16,7 +16,8 @@ export default class NativeTestService extends BaseService {
16 ).then((data) => { 16 ).then((data) => {
17 return data; 17 return data;
18 }).catch((error) => { 18 }).catch((error) => {
19 - return error; 19 + // 这里请抛出异常,不要return
  20 + throw error;
20 }) 21 })
21 } 22 }
22 } 23 }