Параметры запроса зависят от других параметров запроса в 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"
]
}
}
Пожалуйста, дайте мне знать, что именно вы пытаетесь достичь и с какой проблемой вы сталкиваетесь.