有没有办法获得状态422 https://github.com/hapijs/joi
中的400在@Matt Harrison回复之后
全局应用逻辑 你的index.js
server.ext('onPreResponse', function (request, reply) {
var req = request.response;
if (req.isBoom && (req.output.statusCode===400)) {
return reply(Boom.badData(req.output.payload.message));
}
return reply.continue();
});
答案 0 :(得分:3)
Joi本身不知道或不关心HTTP或状态代码。它只是用于验证JavaScript值。
但我猜你正在使用Joi和hapi。在这种情况下,它会给你一个400.你可以使用验证config中的failAction
属性来覆盖它。
您还可以使用Boom创建一个HTTP友好的422错误。
var Boom = require('boom');
server.route({
config: {
validate: {
...
failAction: function (request, reply, source, error) {
reply(Boom.badData('Bad data', error.data));
}
}
},
method: 'GET',
path: '/',
handler: function (request, reply) {
...
}
});