Как я могу отправить обратно заголовки ответов с Node.js / Express?
Я использую res.send
и не важно, что он возвращает статус 200. Я хочу установить этот статус на разные номера для разных ответов (ошибка и т. д.)
это с помощью express
8 ответов
res.writeHead(200, {'Content-Type': 'text/event-stream'});
http://nodejs.org/docs/v0.4.12/api/http.html#response.writeHead
я предположу, что вы используете библиотеку типа "Express", так как nodejs не предоставляетres.send
метод.
а в Экспресс-справочник, вы можете передать второй необязательный аргумент для отправки статуса ответа, например:
// Express 3.x
res.send( "Not found", 404 );
// Express 4.x
res.status(404).send("Not found");
для добавления заголовков ответа до отправить, Вы можете использовать действие setheader способ:
response.setHeader('Content-Type', 'application/json')
статус только на статус способ:
response.status(status_code)
и в то же время с writeHead способ:
response.writeHead(200, {'Content-Type': 'application/json'});
в документации экспресс (4.x) резервация.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')
поскольку в вопросе также упоминается Express, вы также можете сделать это таким образом, используя промежуточное ПО.
app.use(function(req, res, next) {
res.setHeader('Content-Type', 'text/event-stream');
next();
});
Я использую это с express
res.status(status_code).send(response_body);
и это без express (обычный http сервер)
res.writeHead(404, {
"Content-Type": "text/plain"
});
res.write("404 Not Found\n");
res.end();
вы должны использовать действие setheader способ и статус способ для вашей цели.
в узле JS код:
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);
}
});