web-dev-qa-db-ja.com

Node.js / Expressで応答ヘッダーを送り返すにはどうすればよいですか?

res.sendを使用していますが、何であれ、ステータス200を返します。さまざまな応答(エラーなど)に対して、そのステータスを異なる数値に設定したい

これはexpressを使用しています

25
Shamoon
res.writeHead(200, {'Content-Type': 'text/event-stream'});

http://nodejs.org/docs/v0.4.12/api/http.html#response.writeHead

30
chovy

応答ヘッダーを送信する前に送信するには、setHeaderメソッドを使用できます。

response.setHeader('Content-Type', 'application/json')

statusメソッドによるステータスonly

response.status(status_code)

Bothと同時にwriteHeadメソッドとともに:

response.writeHead(200, {'Content-Type': 'application/json'});
26
Z. Khullah

Nodejsはares.sendメソッドを提供しないため、「Express」などのライブラリを使用していると仮定します。

エクスプレスガイド のように、2番目のオプションの引数を渡して、次のような応答ステータスを送信できます。

// Express 3.x
res.send( "Not found", 404 );

// Express 4.x
res.status(404).send("Not found");
16
Nican

質問ではExpressについても言及しているため、ミドルウェアを使用してこの方法で行うこともできます。

app.use(function(req, res, next) {
  res.setHeader('Content-Type', 'text/event-stream');
  next();
});
6
mbokil

目的に合わせて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);
  }
});
4
Naveen Kumar V

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')
4
cs04iz1

私はエクスプレスでこれを使用します

res.status(status_code).send(response_body);

そして、これはエクスプレスなし(通常のHTTPサーバー)

res.writeHead(404, {
    "Content-Type": "text/plain"
});
res.write("404 Not Found\n");
res.end();
3
fuelusumar

set statusCode send()呼び出しの前の変数

res.statusCode = 404;
res.send();
3
Yura