36

我正在使用res.send,无论如何,它都会返回 200 的状态。我想将该状态设置为不同的数字以获得不同的响应(错误等)

这是使用express

4

8 回答 8

47

要在发送前添加响应头,可以使用setHeader方法:

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

状态状态方法:

response.status(status_code)

两者同时使用writeHead方法:

response.writeHead(200, {'Content-Type': 'application/json'});
于 2016-06-24T02:46:42.557 回答
39
res.writeHead(200, {'Content-Type': 'text/event-stream'});

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

于 2011-10-06T17:40:48.203 回答
15

我假设您使用的是“Express”之类的库,因为 nodejs 不提供res.send方法。

Express 指南一样,您可以传入第二个可选参数来发送响应状态,例如:

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

// Express 4.x
res.status(404).send("Not found");
于 2011-10-06T15:10:59.073 回答
8

由于问题还提到了 Express,因此您也可以使用中间件以这种方式进行操作。

app.use(function(req, res, next) {
  res.setHeader('Content-Type', 'text/event-stream');
  next();
});
于 2017-06-10T09:39:55.127 回答
6

您应该使用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);
  }
});
于 2017-12-29T16:09:16.960 回答
4

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')
于 2015-06-16T13:25:38.963 回答
3

在 send() 调用之前设置statusCode var

res.statusCode = 404;
res.send();
于 2014-06-06T15:02:51.143 回答
3

我把它和快递一起用

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

这没有快递(普通的http服务器)

res.writeHead(404, {
    "Content-Type": "text/plain"
});
res.write("404 Not Found\n");
res.end();
于 2015-01-21T14:54:36.340 回答