如何在 Hapi Joi 中指定 HTTP 错误 422 而不是 400
How to specify HTTP error 422 instead of 400 in Hapi Joi
有没有办法改为获取状态 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();
});
Joi 本身不知道也不关心 HTTP 或状态代码。它仅用于验证 JavaScript 值。
但我猜您正在将 Joi 与 hapi 结合使用。在这种情况下,它是 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) {
...
}
});
有没有办法改为获取状态 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();
});
Joi 本身不知道也不关心 HTTP 或状态代码。它仅用于验证 JavaScript 值。
但我猜您正在将 Joi 与 hapi 结合使用。在这种情况下,它是 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) {
...
}
});