如何在Hapi Joi中指定HTTP错误422而不是400

时间:2015-07-21 08:39:17

标签: node.js hapijs 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();
});

1 个答案:

答案 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) {

        ...
    }
});