首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在node / express中发送自定义http状态消息?

如何在node / express中发送自定义http状态消息?
EN

Stack Overflow用户
提问于 2013-01-04 17:24:12
回答 5查看 116.8K关注 0票数 104

我的node.js应用程序的模型类似于express/examples/mvc应用程序。

在一个控制器操作中,我想用一个自定义的HTTP消息输出一个HTTP400状态。默认情况下,http状态消息为"Bad Request":

HTTP/1.1 400 Bad Request

但我想把

HTTP/1.1 400 Current password does not match

我尝试了各种方法,但没有一种方法将http状态消息设置为我的自定义消息。

我当前的解决方案控制器函数如下所示:

exports.check = function( req, res) {
  if( req.param( 'val')!=='testme') {
    res.writeHead( 400, 'Current password does not match', {'content-type' : 'text/plain'});
    res.end( 'Current value does not match');

    return;
  } 
  // ...
}

一切正常但是..。这似乎不是做这件事的正确方法。

有没有更好的方法来使用express设置http状态消息?

EN

回答 5

Stack Overflow用户

发布于 2013-01-06 01:38:10

在express中处理这样的自定义错误的一个很好的方法是:

function errorHandler(err, req, res, next) {
  var code = err.code;
  var message = err.message;
  res.writeHead(code, message, {'content-type' : 'text/plain'});
  res.end(message);
}

(您也可以使用express的内置express.errorHandler来完成此操作)

然后在你的中间件中,在你的路由之前:

app.use(errorHandler);

然后在您想要创建错误‘当前密码不匹配’的地方:

function checkPassword(req, res, next) {
  // check password, fails:
  var err = new Error('Current password does not match');
  err.code = 400;
  // forward control on to the next registered error handler:
  return next(err);
}
票数 13
EN

Stack Overflow用户

发布于 2016-05-08 03:18:19

您可以像这样使用它

return res.status(400).json({'error':'User already exists.'});
票数 12
EN

Stack Overflow用户

发布于 2020-08-12 03:51:37

使用Axios时,您可以使用以下命令检索自定义响应消息:

Axios.get(“your_url”)
.then(data => {
... do something
}.catch( err => {
console.log(err.response.data) // you want this
})

...after在Express中将其设置为:

res.status(400).send(“your custom message”)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14154337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档