我使用以下http.get()
调用来调用本地端点:
http.get({
host: 'localhost',
port: 80,
path: '/service/info?id=' + id
}, function(response) {
console.log(response);
response.setEncoding('utf8');
var data = "";
response.on('data', function(chunk) {
data += chunk;
});
response.on('end', function() {
if(data.length > 0) {
try {
var data_object = JSON.parse(data);
} catch(e) {
return;
}
}
});
}).on("error", function (){console.log("GET request error")});
但是,如果我发送格式错误的请求(会触发HTTP 400),请求在合成上是不正确的,即使response.statusCode
中的function(response)
为400,它也会以{ {1}}而不是在catch() response.on('end', function() {}
上发出错误事件,我想知道为什么会这样,以及如何在node.js上将HTTP 400响应作为错误处理。
如果它到达http.get()
,它会等待很长时间,直到它对客户端做出任何反应,这也很奇怪。我希望服务器尽快响应客户端它遇到400。
答案 0 :(得分:10)
详细说明杰里米的答案,以下是检查适用于我的状态代码的示例:
http.get(url, function (res) {
if (res.statusCode != 200) {
console.log("non-200 response status code:", res.statusCode);
console.log("for url:", url);
return;
}
// do something great :-)
});
答案 1 :(得分:4)
response.statusCode包含状态代码,你可以在http.get(...,cb())中获取它,或者你可以设置一个监听器
request.on('response', function (response) {});
可以获取状态代码。如果要取消GET,可以销毁请求,或者根据需要处理它。