Параметры запроса зависят от других параметров запроса в hapi-swagger

Я строю интерфейс хапи-чванства к моему API. Один из параметров запроса, тип, имеет другой подтип параметра запроса, который зависит от первого. Я понял, как реализовать Joi проверка для этого успешно, но я не так успешно с интерфейсом. Мой код подтверждения

{
    type: Joi.string()
         .valid('image', 'publication', 'dataset')
         .optional(),

    subtype: Joi.string()
         .optional()
         .when('type', {is: 'image',       then: Joi.valid('png', 'jpg')})
         .when('type', {is: 'publication', then: Joi.valid('newspaper', 'book')})
         .description('subtype based on the file_type')
}

Но интерфейс показывает только png и jpg для подтипа. Предложения о том, как я мог бы реализовать это, чтобы правильный подтип показывал, когда выбран соответствующий тип?

1 ответ

Я пробовал что-то похожее, и у меня это прекрасно работает. Пожалуйста, проверьте мой код ниже:

Joi.object().keys({
  billFormat: Joi.string().valid('sms', 'email').required(),
  email: Joi.string()
    .when('ebillFormat', { is: 'sms', then: Joi.valid('a', 'b') })
    .when('ebillFormat', { is: 'email', then: Joi.valid('c', 'd') }),
});

И моя полезная нагрузка выглядит следующим образом:

{
    "ebillFormat": "email",
    "email": "hello"
}

Я получаю следующую ошибку:

{
    "statusCode": 400,
    "error": "Bad Request",
    "message": "child \"email\" fails because [\"email\" must be one of [c, d]]",
    "validation": {
        "source": "payload",
        "keys": [
            "email"
        ]
    }
}

Пожалуйста, дайте мне знать, что именно вы пытаетесь достичь и с какой проблемой вы сталкиваетесь.

Другие вопросы по тегам