嗯,在阅读了有关此问题的一些事情后,我决定询问。
核心思路很简单:检测传入的无效网址/ URI,并使用相关代码/数据向客户端返回响应。
通常,在处理节点中的错误时,我们使用如下语法:
if (err) {
return res.status(500).json(error: {msg: err.message, stack: err.stack});
}
好的,这很简单,但重要的是我们检测到:"嘿,如果发生错误,请将此内容发送给客户" 。
但如果它不是500内部怎么办?据我所知,错误的请求错误会像客户端错误一样发送,并在提示符中有自己的堆栈,类型和消息吗?
阅读This,我找到了URIError构造函数,它指向一个表示与ivalids URI一起出现的错误的实例。所以,可以这样做:
if (err instanceof URIError) { /* send a handler for bad request */ };
或者我需要从头开始验证URI并进行自己的错误继承?
任何提示?理念? ... 提前致谢! < 3
答案 0 :(得分:7)
我通常通过定义我想要的路线来做到这一点:
app.get('/good' ... );
app.post('/alsogood' ... );
然后抓住未经发布的网址,执行:
app.all('*', function(req, res) {
throw new Error("Bad request")
})
然后注入错误处理中间件:
app.use(function(e, req, res, next) {
if (e.message === "Bad request") {
res.status(400).json({error: {msg: e.message, stack: e.stack}});
}
});
显然你可以比这更复杂,但这个简单的想法得到了重点。
另外,对于它的价值,如果他们试图访问不存在的URL,你应该把404回到客户端。