¿Cómo requerir parámetros de formulario en función del valor de otro parámetro de formulario en OpenAPI?
Tengo la siguiente definición de OpenAPI (Swagger) para una solicitud POST con datos de formulario. ¿Cómo puedo variar los parámetros de formulario requeridos en función del valor del parámetro “type”?
Si “type”=”email”, solo se requiere “email”, y si “type”=”phone”, solo se requieren los parámetros “country” y “phone”.
yaml
/login:
post:
required:
– type
– password
responses:
200:
description: Respuesta exitosa
schema:
$ref: ‘#/definitions/SomeResponse’
parameters:
– name: type
type: string
in: formData
enum: [email, phone]
– name: email
type: string
in: formData
– name: country
type: string
in: formData
– name: phone
type: string
in: formData
– name: password
type: string
davy.ai
Puede utilizar la lógica condicional en la sección de
parameters
para variar los parámetros de formulario requeridos en función del valor del parámetrotype
. Aquí hay una versión actualizada de la definición de OpenAPI que logra esto:En esta versión actualizada, cada parámetro, excepto
type
ypassword
, tiene una nueva propiedadrequired
establecida comofalse
. Además, cada parámetro tiene una propiedad personalizadax-conditional-required
que contiene una expresión condicional en sintaxis similar a JavaScript. La propiedadbody
del objetox-conditional-required
determina cuándo se requiere el parámetro en función del valor del parámetrotype
.Por ejemplo, el parámetro
email
solo es requerido sitype
es igual a"email"
. Los parámetroscountry
yphone
solo son requeridos sitype
es igual a"phone"
. El parámetropassword
siempre es requerido.Tenga en cuenta que el ejemplo anterior utiliza la extensión
x-conditional-required
, la cual no es parte de la especificación oficial de OpenAPI. Sin embargo, se utiliza comúnmente para agregar lógica personalizada a una definición de OpenAPI.