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

Node.js 如何在Hapi Joi中指定HTTP错误422而不是400,node.js,hapijs,joi,Node.js,Hapijs,Joi,是否有办法获得422状态 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.ba

是否有办法获得422状态 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分。您可以通过使用验证中的
failAction
属性来覆盖此操作

还可以使用创建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) {

        ...
    }
});

我已经用一种可能的方法更新了这个问题,以设置全局逻辑