Предоставляет ли пользовательский интерфейс 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

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