如何使用Node.js / Express发回响应头?

时间:2011-10-06 14:59:30

标签: node.js express response-headers

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

这是使用express

8 个答案:

答案 0 :(得分:28)

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

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

答案 1 :(得分:22)

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

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

状态方法仅的状态:

response.status(status_code)
使用 writeHead 方法同时

两者

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

答案 2 :(得分:15)

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

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

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

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

答案 3 :(得分:5)

由于这个问题也提到Express,你也可以这样使用中间件。

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

答案 4 :(得分:4)

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

答案 5 :(得分:3)

在send()调用

之前设置 statusCode var
res.statusCode = 404;
res.send();

答案 6 :(得分:3)

我用快递

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

这没有表达(普通的http服务器)

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

答案 7 :(得分:2)

您应该使用 setHeader 方法和状态方法。

在Node 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);
  }
});