es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo describir una lista de objetos particulares utilizando Swagger en Spring Boot?

Describí mi controlador usando Swagger pero cuando intenté extraer la descripción .yaml del controlador, como respuesta de los endpoints encontré una lista de objetos. ¿Cómo puedo hacer que Swagger describa esa lista como una lista de objetos particulares, como una lista de coches, una lista de casas, una lista de animales, etc., y luego describir qué objeto en particular es, como un coche, una casa o un animal?

Mi caso es:

/dummy_endpoint:
  get:
    tags:
      - foo-controller
    summary: Obtener lista de foo
    description: Enviar solicitud GET para obtener la lista de foo
    operationId: findAllFooUsingGET
    produces:
      - application/json
    responses:
        '200':
          description: Lista de foo obtenida exitosamente
          schema:
            type: array
            items:
              type: object
        '401':
          description: No autorizado
        '403':
          description: Prohibido
        '404':
          description: No encontrado

Lo que quiero obtener:

/dummy_endpoint:
  get:
    tags:
      - foo-controller
    summary: Obtener lista de foo
    description: Enviar solicitud GET para obtener la lista de foo
    operationId: findAllFooUsingGET
    produces:
      - application/json
    responses:
      '200':
        description: Lista de foo obtenida exitosamente
        schema:
          type: array
          items:
            type: Foo
      '401':
        description: No autorizado
      '403':
        description: Prohibido
      '404':
        description: No encontrado
definitions:
  Foo:
    type: object
    properties:
      id:
        type: integer
        format: int32
      name:
        type: string

Note: I have translated the code and the output as requested.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para hacer que Swagger describa la lista como una lista de objetos específicos, debes definir el objeto en la sección definitions, luego hacer referencia a él en el campo items del schema. En tu caso, puedes definir un objeto Foo en definitions y hacer referencia a él en el campo items del schema. Aquí tienes un ejemplo:

    /dummy_endpoint:
      get:
        tags:
          - foo-controller
        summary: Obtener lista de foo
        description: Enviar una solicitud GET para obtener la lista de foo
        operationId: findAllFooUsingGET
        produces:
          - application/json
        responses:
          '200':
            description: Lista de foo obtenida exitosamente
            schema:
              type: array
              items:
                $ref: '#/definitions/Foo'
          '401':
            description: No autorizado
          '403':
            description: Prohibido
          '404':
            description: No encontrado
    definitions:
      Foo:
        type: object
        properties:
          id:
            type: integer
            format: int32
          name:
            type: string
    

    En este ejemplo, definimos un objeto Foo con dos propiedades: id de tipo entero y name de tipo cadena de caracteres. En el campo items del schema, hacemos referencia al objeto Foo con $ref y proporcionamos la ruta a definitions. Con esta configuración, Swagger describirá la lista como una lista de objetos Foo, los cuales tienen una propiedad id y una propiedad name.

Comments are closed.