次の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
infunction(response)
が400であってもcatch() response.on('end', function() {}
、エラーイベントを発行する代わりに、結果的に発生しますhttp.get()
。なぜそうなるのでしょうか。そして、node.jsでHTTP400応答をエラーとして処理する方法。
にcatch(e)
到達すると、クライアントに何かが応答するまで長時間待機しますが、これも奇妙です。サーバーがクライアントにできるだけ早く400に到達したことを応答するようにします。