Как указать ошибку HTTP 422 вместо 400 в Hapi Joi

Есть ли способ получить статус 422 вместо 400 в https://github.com/hapijs/joi?

ОБНОВИТЬ

после ответа @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();
});

person Whisher    schedule 21.07.2015    source источник


Ответы (1)


Сам Joi не знает и не заботится о HTTP или кодах состояния. Это просто для проверки значений JavaScript.

Но я предполагаю, что вы используете Джой с хапи. В этом случае hapi дает вам 400. Вы можете переопределить это, используя свойство failAction в валидации config< /а>.

Вы также можете использовать 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) {

        ...
    }
});
person Matt Harrison    schedule 21.07.2015
comment
Я обновил вопрос, указав возможный способ установить логику глобально. - person Whisher; 21.07.2015