我几乎只使用Request module来调用我的Node.JS代码中的API。它健壮,全面,维护良好。
但是,每次调用API时,我都会发现自己正在编写以下3路if
的变体:
request.get(uri, function(error, response, body) {
if(error) {
//Request error
callback(error, null);
}
else if(response.statusCode !== myExpectedStatusCode) {
//API error
callback({error: new Error('HTTP ' + response.statusCode)});
}
else {
//Yay! got payload!!!!
callback(null, body);
}
});
这会导致各种意外的边缘情况,并且每次调用都会有多个测试用例。是否有更简单,更优雅的方式来处理API调用?
或者,当状态代码与值/多个值不匹配时,是否可以将参数传递给Request,告诉它返回Error
对象?那样我至少可以跳过第二个if
?
答案 0 :(得分:0)
写一个共享处理函数a la:
function apiResponse(callback, myExpectedStatusCode, error, response, body) {
if (error) {
//Request error
callback(error, null);
return;
}
myExpectedStatusCode = myExpectedStatusCode || 200;
if (response.statusCode !== myExpectedStatusCode) {
//API error
callback({
error: new Error('HTTP ' + response.statusCode)
});
return;
}
//Yay! got payload!!!!
callback(null, body);
}
像这样使用它:
request.get(uri, apiResponse.bind(null, callback, 201));