res.send
を使用していますが、何であれ、ステータス200を返します。さまざまな応答(エラーなど)に対して、そのステータスを異なる数値に設定したい
これはexpress
を使用しています
res.writeHead(200, {'Content-Type': 'text/event-stream'});
http://nodejs.org/docs/v0.4.12/api/http.html#response.writeHead
応答ヘッダーを送信する前に送信するには、setHeaderメソッドを使用できます。
response.setHeader('Content-Type', 'application/json')
statusメソッドによるステータスonly:
response.status(status_code)
Bothと同時にwriteHeadメソッドとともに:
response.writeHead(200, {'Content-Type': 'application/json'});
Nodejsはares.send
メソッドを提供しないため、「Express」などのライブラリを使用していると仮定します。
エクスプレスガイド のように、2番目のオプションの引数を渡して、次のような応答ステータスを送信できます。
// Express 3.x
res.send( "Not found", 404 );
// Express 4.x
res.status(404).send("Not found");
質問ではExpressについても言及しているため、ミドルウェアを使用してこの方法で行うこともできます。
app.use(function(req, res, next) {
res.setHeader('Content-Type', 'text/event-stream');
next();
});
目的に合わせてsetHeaderメソッドとstatusメソッドを使用する必要があります。
解決策:
app.post('/login', function(req, res) {
// ...Check login credentials with DB here...
if(!err) {
var data = {
success: true,
message: "Login success"
};
// Adds header
res.setHeader('custom_header_name', 'abcde');
// responds with status code 200 and data
res.status(200).json(data);
}
});
express (4.x)のドキュメントでは、res.sendStatusを使用してステータスコード定義を送信します。言及されているように here にはそれぞれ特定の説明があります。
res.sendStatus(200); // equivalent to res.status(200).send('OK')
res.sendStatus(403); // equivalent to res.status(403).send('Forbidden')
res.sendStatus(404); // equivalent to res.status(404).send('Not Found')
res.sendStatus(500); // equivalent to res.status(500).send('Internal Server Error')
私はエクスプレスでこれを使用します
res.status(status_code).send(response_body);
そして、これはエクスプレスなし(通常のHTTPサーバー)
res.writeHead(404, {
"Content-Type": "text/plain"
});
res.write("404 Not Found\n");
res.end();
set statusCode send()呼び出しの前の変数
res.statusCode = 404;
res.send();