Saltar al contenido

¿Cómo documentar los nombres de los parámetros de consulta dinámica en OpenAPI (Swagger)?

Solución:

Los parámetros de consulta de formato libre se pueden describir utilizando OpenAPI 3.0, pero no OpenAPI 2.0 (Swagger 2.0). El parámetro debe tener type: object con el método de serialización style: form y explode: true. El objeto se serializará como ?prop1=value1&prop2=value2&..., donde individual prop = valor los pares son las propiedades del objeto.

openapi: 3.0.1
...
paths:
  /users:
    get:
      parameters:
        - in: query
          name: params
          schema:
            type: object
            # If the parameter values are of specific type, e.g. string:
            additionalProperties:
              type: string
            # If the parameter values can be of different types
            # (e.g. string, number, boolean, ...)
            # additionalProperties: true

          # `style: form` and `explode: true` is the default serialization method
          # for query parameters, so these keywords can be omitted
          style: form
          explode: true

Los parámetros de consulta de forma libre son compatibles con Swagger UI 3.15.0+ y Swagger Editor 3.5.6+. En el editor de parámetros, ingrese los nombres y valores de los parámetros en el formato de objeto JSON, p. Ej. { "prop1": "value1", "prop2": "value2" }. “Pruébelo” los enviará como param=value parámetros de consulta:

Parámetros de consulta de forma libre en la interfaz de usuario de Swagger

Sin embargo, no estoy seguro del soporte de Codegen.

La respuesta de @ Helen funciona perfectamente incluso con Spring usando la biblioteca springdoc-openapi-ui.

Dependencia:

 <dependency>
    <groupId>org.springdoc</groupId>
    <artifactId>springdoc-openapi-ui</artifactId>
    <version>1.1.43</version>
 </dependency>

En la función API, agregue el siguiente parámetro:

 @Parameter(in=ParameterIn.QUERY,
            name="params", style=ParameterStyle.FORM,
            [email protected](type="object"), explode=Explode.TRUE,
            example="") String paramsObj
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *