validationnodejs + express中的URL以处理错误的请求错误

那么,在阅读了关于这个问题的一些事情后,我决定去询问一下。

这个想法在核心上很简单:检测传入的无效URL / URI,并向客户端返回一个响应,并提供相应的代码/数据。

通常,在处理节点中的错误时,我们使用如下语法:

if (err) { return res.status(500).json(error: {msg: err.message, stack: err.stack}); } 

好吧,这很简单,但最重要的是我们发现: “嘿,如果发生错误,把这个东西发给客户端”

但如果它不是一个500内部呢? 据我所知,错误的请求错误是发送像客户端错误,并有提示,rigth自己的堆栈,types和消息?

阅读这个 ,我find了URIError的构造函数,它指向一个实例,表示与ivalids URI发生的错误。 所以,可以这样做:

 if (err instanceof URIError) { /* send a handler for bad request */ }; 

或者我需要从头开始validationURI并使自己的错误inheritance?

任何提示? 理念? … 提前致谢! <3

我通常通过定义我想要的路线来做到这一点:

 app.get('/good' ... ); app.post('/alsogood' ... ); 

然后抓到未经路由的url,请执行以下操作:

 app.all('*', function(req, res) { throw new Error("Bad request") }) 

然后注入一个error handling中间件:

 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返回给客户端。