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

发布于 2024-12-08 15:40:13 字数 128 浏览 1 评论 0原文

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

这是使用 express< /代码>

I'm using res.send and no matter what, it returns status of 200. I want to set that status to different numbers for different responses (Error, etc)

This is using express

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

雨巷深深 2024-12-15 15:40:13

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

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

通过status方法添加状态:

response.status(status_code)

两者同时使用 writeHead 方法:

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

For adding response headers before send, you can use the setHeader method:

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

The status only by the status method:

response.status(status_code)

Both at the same time with the writeHead method:

response.writeHead(200, {'Content-Type': 'application/json'});
夏花。依旧 2024-12-15 15:40:13
res.writeHead(200, {'Content-Type': 'text/event-stream'});

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

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

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

迷迭香的记忆 2024-12-15 15:40:13

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

正如 Express 指南 中一样,您可以将第二个可选参数传递给发送响应状态,例如:

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

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

I'll assume that you're using a library like "Express", since nodejs doesn't provide ares.send method.

As in the Express guide, you can pass in a second optional argument to send the response status, such as:

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

// Express 4.x
res.status(404).send("Not found");
染墨丶若流云 2024-12-15 15:40:13

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

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

Since the question also mentions Express you could also do it this way using middleware.

app.use(function(req, res, next) {
  res.setHeader('Content-Type', 'text/event-stream');
  next();
});
氛圍 2024-12-15 15:40:13

您应该使用 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);
  }
});

You should use setHeader method and status method for your purpose.

SOLUTION:

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);
  }
});
彼岸花似海 2024-12-15 15:40:13

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

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

set statusCode var before send() call

res.statusCode = 404;
res.send();
野心澎湃 2024-12-15 15:40:13

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

In the documentation of express (4.x) the res.sendStatus is used to send status code definitions. As it is mentioned here each has a specific description.

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')
无需解释 2024-12-15 15:40:13

我将其与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();

i use this with express

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

and this without express (normal http server)

res.writeHead(404, {
    "Content-Type": "text/plain"
});
res.write("404 Not Found\n");
res.end();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文