aliyun / api-gateway-nodejs-sdk

The API Gateway SDK for Node.js
MIT License
106 stars 23 forks source link

错误处理的逻辑问题 #23

Closed xiaoemoxiw closed 6 years ago

xiaoemoxiw commented 6 years ago
var code = response.statusCode;
if (code !== 200) {
  var message = response.headers['x-ca-error-message'] || '';
  var err = new Error(`${method} ${format(url)} failed width code(${code}).` +
    ` request id: ${response.headers['x-ca-request-id']},` +
    ` error message: ${message}`);
  if (debug.enabled) {
    debug('stringToSign:');
    debug('client: %s', stringToSign.replace(/\n/g, '#'));
    if (message.includes('Invalid Signature')) {
      var serverStringToSign = message.replace('Invalid Signature, Server StringToSign:', '');
      debug('server: %s', serverStringToSign);
    }
  }
  throw err;
}

这段代码不应该写的,错误处理应该留给别人来处理,这样写死很不方便

yuanchenxi95 commented 6 years ago

所以现在这个repo还有人维护吗

xiaoemoxiw commented 6 years ago

我自己重写了里面的东西,有些地方不很好,不知道作者还有没有维护

JacksonTian commented 6 years ago

您指的是 code === 200 的判断吗?

xiaoemoxiw commented 6 years ago

code !== 200 你这样写死了,人家前端取不到错误代码,只能拿到你抛出的错误信息,这样很不方便

xiaoemoxiw commented 6 years ago

我直接屏蔽了你这段代码,然后把request和response也返回

JacksonTian commented 6 years ago

code 和 response 只要在 error 上引用一下就可以了

xiaoemoxiw commented 6 years ago

if (code !== 200) { ... throw err; }

JacksonTian commented 6 years ago

新的版本中,error 对象上附加了 code/data 属性。