请求始终返回null错误对象

时间:2015-06-30 02:03:50

标签: node.js http request runtime-error

我正在使用Request和标准Node.js HTTP模块来编写一个简单的休息服务。

现在,服务器端请求处理程序如下所示:

response.writeHead("400","Nope");
response.end();

客户端代码如下所示:

request.get(href,handleResponse);
function handleResponse(error,response,body) {

   console.log(arguments);
}

response.statusCode400,但error始终为null

我需要做什么服务器端才能让Request模块识别出响应是错误的?

2 个答案:

答案 0 :(得分:7)

成功收到请求响应时没有错误。如果请求本身错误,如果响应表示错误,则仅填充错误对象。从文档:如果在请求期间遇到任何错误(使用DNS解析,TCP级别错误或实际的HTTP解析错误),则会在返回的请求对象上发出“错误”事件。 < / p>

请求 - &gt;成功响应(可能代表远程错误) - &gt;回复填充

请求 - &gt;本地发生错误或与远程通信发生错误(无响应或无法识别的响应) - &gt;填充错误

答案 1 :(得分:1)

我不喜欢这种默认行为。我还不确定,但我甚至可以创建一些包含request的实用程序方法来更改它。我的包装回调类似于:

function(connError, httpResponse, body) {
    let error = null;
    if(connError) {
        error = connError;
    } else if(httpResponse.statusCode != 200) {
        error = body;
        body = null;
    }
    finalCallback(error, body);
}