节点自定义错误处理程序中间件优化?
我工作的一个的NodeJS平台,暴露出REST API内的推动者。
我需要实现一些自定义错误处理程序,它们将实现一些业务逻辑。
基本上,我必须处理POST请求,其内容编码为application/json
。
我期望收到一个对象的列表代表服务在一个数组中。阵列的
每个项目是一个对象,其确实具有以下结构
{
"code": "sampleCode",
"id": "someId",
"status: "someStatus"
}
在业务逻辑的术语,每个服务属于一个家庭。并且每个家庭都有一些配置存储在属性文件中。
一旦我收到请求,我需要检查主体内容并应用一些会导致自定义错误的自定义规则。
规则是:
-
"code
值不能为空。 -
"code"
值必须是在属性 -
"code"
如果代码值属于家族FOO或栏ID定义的列表不能为空
我使用lodash做试验实施了一些小单元的功能在收藏。
我主要的问题是,我需要去那些过程的异步吗?现在我只是调用它的功能。由于我对nodeJs非常陌生,特别是在企业环境中的最佳实践方面,我希望得到更多有经验的用户的意见?
执行业务逻辑的自定义错误处理程序应该是异步还是没有好处?
Nodejs基本上是异步的,所以一般来说,你不会做同步的东西。
如果使用expressjs或类似的,你应该请求之前创造出一种“过滤器”的,是这样的:
function validator(req, res, next){
//my validation code
next();
}
app.get('/my/endpoint', validator, function (req, res) {
req.send();
});
我明白了,看起来公平,在我的使用案例中实现起来有点复杂,因为应用程序是大型生态系统的一部分。它确实使用express,但在引擎盖下作为从swagger yaml文件生成的路由。我认为我需要深入分析这些模块,以便真正理解正在发生的事情并使用正确的处理程序 – anchnk
express基于中间件的概念http://expressjs.com/zh/guide/using-middleware.html#middleware 。如果您可以访问路线,请指定路线,您可能只需要添加额外的功能,然后拨打电话即可。肯定会更深入,因为它似乎是一种自定义配置。 –
通常情况下,这是一个好主意,在node.js中完全异步如果需要,最好不得不“重新同步”,而不是阻止事件循环的风险。 – DrakaSAN