请求总是 returns 空错误对象
Request always returns null error object
我正在使用 Request and standard Node.js HTTP 模块编写一个简单的休息服务。
现在,服务器端请求处理程序如下所示:
response.writeHead("400","Nope");
response.end();
客户端代码如下所示:
request.get(href,handleResponse);
function handleResponse(error,response,body) {
console.log(arguments);
}
response.statusCode
是 400
,但 error
始终是 null
。
我需要在服务器端做什么才能让请求模块识别响应错误?
成功收到请求响应,没有错误。只有在请求本身出错时才会填充错误对象,如果响应表示错误则不会填充。来自文档:如果在请求期间遇到任何错误(是 DNS 解析、TCP 级别错误或实际 HTTP 解析错误),则会在返回的请求对象上发出 'error' 事件。
请求 --> 成功响应(可能代表远程错误)--> 已填充响应
请求 --> 本地发生错误或与远程通信(无响应或无法识别的响应)--> 错误填充
我不喜欢这种默认行为。我还不确定,但我什至可以创建一些包装 request
的实用方法来更改它。我的包装回调类似于:
function(connError, httpResponse, body) {
let error = null;
if(connError) {
error = connError;
} else if(httpResponse.statusCode != 200) {
error = body;
body = null;
}
finalCallback(error, body);
}
我正在使用 Request and standard Node.js HTTP 模块编写一个简单的休息服务。
现在,服务器端请求处理程序如下所示:
response.writeHead("400","Nope");
response.end();
客户端代码如下所示:
request.get(href,handleResponse);
function handleResponse(error,response,body) {
console.log(arguments);
}
response.statusCode
是 400
,但 error
始终是 null
。
我需要在服务器端做什么才能让请求模块识别响应错误?
成功收到请求响应,没有错误。只有在请求本身出错时才会填充错误对象,如果响应表示错误则不会填充。来自文档:如果在请求期间遇到任何错误(是 DNS 解析、TCP 级别错误或实际 HTTP 解析错误),则会在返回的请求对象上发出 'error' 事件。
请求 --> 成功响应(可能代表远程错误)--> 已填充响应
请求 --> 本地发生错误或与远程通信(无响应或无法识别的响应)--> 错误填充
我不喜欢这种默认行为。我还不确定,但我什至可以创建一些包装 request
的实用方法来更改它。我的包装回调类似于:
function(connError, httpResponse, body) {
let error = null;
if(connError) {
error = connError;
} else if(httpResponse.statusCode != 200) {
error = body;
body = null;
}
finalCallback(error, body);
}