【发布时间】:2018-10-11 21:53:13
【问题描述】:
我目前正在使用swagger-express-middleware 包来验证针对我的 Swagger API 文档的请求。
按照their document,我已经实现了中间件并处理了如下所示的错误
createMiddleware(swaggerDoc, app, (middlewareError, middleware) => {
app.use(middleware.metadata());
app.use(middleware.parseRequest());
app.use(middleware.validateRequest());
// Error handler to send the swagger validation response
app.use((err, req, res, next) => {
res.status(err.status).json({
type: 'SCHEMA VALIDATION FAILED',
message: err.message
});
});
});
如果架构中有任何错误,我从中间件返回的响应有一个属性message,其中描述了错误,这显然是响应的重要部分,因为它告诉请求者缺少什么。不幸的是,message 的内容不是很直观或可读。例如,如果请求中缺少属性,则描述将是
"message": "The \"pinDetails\" body parameter is invalid ({\"Pindd\":\"asd\"}) \nJSON Schema validation error. \nData path: \"\" \nSchema path: \"/required/0\" \nMissing required property: pin"
如您所见,该消息不是很直观和干净,因此难以阅读。所以,我的问题是,这个包是否提供了任何方法来取回更清晰的消息版本,或者我可以做同样的任何其他方式?
注意:由于消息是多行的并且最重要的是动态,我不能只是拆分或替换字符串,否则看起来就像一些不相关的句子放在一起(也许更糟糕的情况是我会这样做最终做但绝对不是我想要的)。
【问题讨论】:
标签: javascript validation express swagger middleware