Как я могу отправить ответные заголовки с помощью Node.js / Express? - PullRequest
24 голосов
/ 06 октября 2011

Я использую res.send, и, несмотря ни на что, он возвращает статус 200. Я хочу установить этот статус на разные номера для разных ответов (Ошибка и т. Д.)

Это использует express

Ответы [ 8 ]

28 голосов
/ 06 октября 2011
res.writeHead(200, {'Content-Type': 'text/event-stream'});

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

23 голосов
/ 24 июня 2016

Для добавления заголовков ответов перед отправкой можно использовать метод setHeader :

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

Статус только с помощью статус метод:

response.status(status_code)

Оба одновременно с методом writeHead :

response.writeHead(200, {'Content-Type': 'application/json'});
15 голосов
/ 06 октября 2011

Я предполагаю, что вы используете библиотеку типа «Экспресс», поскольку nodejs не предоставляет метод res.send.

Как и в Экспресс-руководстве , выможет передать второй необязательный аргумент для отправки статуса ответа, например:

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

// Express 4.x
res.status(404).send("Not found");
5 голосов
/ 10 июня 2017

Поскольку в вопросе также упоминается Express, вы также можете сделать это с помощью промежуточного программного обеспечения.

app.use(function(req, res, next) {
  res.setHeader('Content-Type', 'text/event-stream');
  next();
});
4 голосов
/ 29 декабря 2017

Вы должны использовать 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 голосов
/ 16 июня 2015

В документации express (4.x) res.sendStatus используется для отправки определений кодов состояния. Как упомянуто здесь , у каждого есть определенное описание.

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')
3 голосов
/ 21 января 2015

я использую это с экспресс

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

и это без экспресс (обычный http-сервер)

res.writeHead(404, {
    "Content-Type": "text/plain"
});
res.write("404 Not Found\n");
res.end();
3 голосов
/ 06 июня 2014

set statusCode var перед вызовом send ()

res.statusCode = 404;
res.send();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...