Предоставляет ли пользовательский интерфейс hapi-swagger валидацию события onChange для enum?
У меня есть API /v1/test/{note?}
Я добавил ниже код для этого.
module.exports = [
{
method: 'POST',
path: '/v1/test/{note?}',
config: {
description: 'Greet user',
notes: ['Use to greet a user'],
tags: ['api'],
handler: defaultHandler,
timeout:{
server:3000
},
validate: {
params: {
note: Joi.string()
.required()
.valid(['param1', 'param2', 'param3'])
.description('Notes')
a: Joi.string().required().description('for param2')
b: Joi.string().required().description('for param3')
},
headers: {
name: Joi.string().required()
},options: {
allowUnknown: true
}
}
}
}
];
В Swagger UI, есть ли способ, если я выберу param2 из выпадающего списка, тогда пользовательский интерфейс должен отобразить a, если я выберу param3, пользователь должен отобразить b или для param1 должен отобразить имя (параметр заголовка)
1 ответ
Вы можете определить условие, используя проверку Joi https://github.com/hapijs/joi/blob/v13.1.2/API.md#anywhencondition-options
{
note: Joi.string()
.required()
.valid(['param1', 'param2', 'param3'])
.description('Notes'),
a: Joi.string()
.description('for param2')
.when('note', { is: 'param2', then: Joi.required() }),
b: Joi.string()
.description('for param3')
.when('note', { is: 'param3', then: Joi.required() }),
}
Но хапи-чванство не полностью поддерживало это. when
на самом деле alternatives
под капотом.
Существует список функций, которые нельзя перенести на чванство https://github.com/glennjones/hapi-swagger/blob/master/usageguide.md#features-from-hapi-that-cannot-be-ported-to-swagger