validator tools hub swagger

tools - Swagger 2.0: ¿cómo hacer que "uno u otro" parámetro requerido?



swagger web (4)

Tengo un recurso de swagger 2.0 definido a continuación. ¿Cómo puedo hacer "param1 o param2" requerido? La persona que llama tiene que pasar param1 o param2.

/some/res: put: summary: some resource responses: 200: description: Successful response schema: $ref: ''#/definitions/SomeResponse'' parameters: - name: param1 type: string description: param1 in: formData required: false - name: param2 type: string description: param2 in: formData required: false


El escenario específico en esta pregunta, una solicitud POST / PUT / PATCH con un cuerpo de datos de formulario que contiene param1 o param2 , se puede definir utilizando OpenAPI 3.0 y oneOf :

openapi: 3.0.0 ... paths: /some/res: put: requestBody: required: true content: application/x-www-form-urlencoded: schema: oneOf: - type: object properties: param1: type: string required: - param1 additionalProperties: false - type: object properties: param2: type: string required: - param2 additionalProperties: false

Nota para los usuarios de Swagger UI: la IU de datos de formulario y la representación de ejemplo para los esquemas oneOf no están disponibles para las definiciones de OpenAPI 3.0.




La especificación Swagger no admite el requisito condicional o la inclusión / exclusión de parámetros.

Lo que sugeriría es indicar claramente en la descripción sus reglas para la inclusión / exclusión de parámetros de consulta. Luego, utilizando un marco de validación, que depende de su idioma (es decir, javax.validation para Java, restify-validation para restify, etc.), valide los parámetros en consecuencia.