Documentación y anotación en OpenAPI

Documentación y anotación en OpenAPI #

Una documentación y una anotación eficaces son componentes fundamentales del desarrollo de API. Garantizan que tus API sean comprensibles, mantenibles y utilizables por otros desarrolladores. OpenAPI, un estándar ampliamente adoptado para definir API, ofrece mecanismos sólidos para documentar y anotar tus API. Este artículo explora las buenas prácticas, las herramientas y las técnicas para crear documentación y anotaciones de API completas y fáciles de usar con OpenAPI.

Importancia de la documentación y la anotación #

La documentación y la anotación son esenciales por varias razones:

  1. Claridad: una documentación clara ayuda a los desarrolladores a entender cómo usar tu API.
  2. Mantenimiento: una buena documentación facilita el mantenimiento y la actualización de tu API.
  3. Incorporación: las API bien documentadas simplifican el proceso de incorporación de nuevos desarrolladores.
  4. Soporte: reduce la necesidad de soporte al ofrecer respuestas a preguntas y problemas comunes.

Elementos básicos de la documentación #

Descripción general #

Comienza con una descripción general de tu API que incluya su propósito, sus características principales y su arquitectura de alto nivel. Esta sección debe dar a los desarrolladores una idea rápida de qué hace tu API y cómo puede utilizarse.

Ejemplo:

openapi: 3.0.1
info:
  title: Sample API
  description: This is a sample API to demonstrate OpenAPI documentation.
  version: 1.0.0
  contact:
    name: API Support
    url: 'http://www.example.com/support'
    email: support@example.com

Endpoints #

Documenta cada endpoint con un resumen y una descripción claros y concisos, e indica los métodos HTTP admitidos. Incluye los parámetros de ruta, los parámetros de consulta, los cuerpos de solicitud y las respuestas.

Ejemplo:

paths:
  /users:
    get:
      summary: Retrieve a list of users
      description: This endpoint retrieves a list of users.
      responses:
        '200':
          description: A list of users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'

Parámetros #

Describe los parámetros que acepta tu API, incluidos sus tipos, formatos y restricciones. Esto abarca los parámetros de ruta, los parámetros de consulta, los parámetros de encabezado y los parámetros del cuerpo de la solicitud.

Ejemplo:

paths:
  /users/{userId}:
    get:
      summary: Retrieve a user by ID
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: A user object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'

Respuestas #

Documenta las posibles respuestas de cada endpoint, incluidos los códigos de estado, las descripciones y los esquemas de respuesta.

Ejemplo:

paths:
  /users:
    get:
      summary: Retrieve a list of users
      responses:
        '200':
          description: A list of users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
        '404':
          description: No users found

Técnicas avanzadas de documentación #

Valores de ejemplo #

Proporcionar valores de ejemplo para los parámetros y las respuestas ayuda a los desarrolladores a entender la entrada y la salida esperadas.

Ejemplo:

paths:
  /users:
    get:
      summary: Retrieve a list of users
      responses:
        '200':
          description: A list of users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
              examples:
                application/json:
                  value: [
                    { "id": 1, "name": "John Doe" },
                    { "id": 2, "name": "Jane Smith" }
                  ]

Descripciones con Markdown #

OpenAPI permite usar Markdown en las descripciones, lo que da lugar a una documentación más rica y legible.

Ejemplo:

paths:
  /users:
    get:
      summary: Retrieve a list of users
      description: |
        This endpoint retrieves a list of users.
        **Example:**
        ```bash
        curl -X GET "https://api.example.com/users" -H "accept: application/json"
        ```
      responses:
        '200':
          description: A list of users

Enlaces a documentación externa #

Incluye enlaces a recursos externos para ofrecer explicaciones más detalladas o tutoriales.

Ejemplo:

components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
      externalDocs:
        description: More information about the User schema
        url: 'https://example.com/docs/user-schema'

Anotaciones para la generación de código y la integración #

Anotaciones para la generación de código de cliente y de servidor #

Herramientas como Swagger Codegen y OpenAPI Generator pueden generar bibliotecas de cliente y stubs de servidor a partir de definiciones OpenAPI. Anotar tu especificación OpenAPI con metadatos adicionales puede mejorar el código generado.

Ejemplo:

components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
      x-codegen:
        className: User

Anotaciones para herramientas de gestión de API #

Integra herramientas de gestión de API como Kong o Apigee mediante extensiones y anotaciones personalizadas.

Ejemplo:

x-kong-plugin-key-auth:
  name: key-auth
  config:
    key_names:
      - apikey

Herramientas para crear y gestionar la documentación #

Swagger UI #

Swagger UI ofrece una interfaz interactiva para tu documentación OpenAPI, que permite a los desarrolladores explorar y probar tu API directamente desde la documentación.

Redoc #

Redoc es una herramienta popular para generar documentación de API atractiva y personalizable a partir de definiciones OpenAPI.

Stoplight #

Stoplight ofrece una plataforma integral para el diseño, la documentación y las pruebas de API, con compatibilidad con OpenAPI.

Postman #

Postman permite importar definiciones OpenAPI para crear documentación de API interactiva y facilitar las pruebas y la colaboración.

Buenas prácticas para la documentación de API #

Mantén la documentación actualizada #

Asegúrate de que tu documentación esté siempre sincronizada con la implementación de tu API. Las herramientas de automatización y la integración continua pueden ayudar a mantener esta coherencia.

Proporciona ejemplos detallados #

Los ejemplos ayudan a los usuarios a entender cómo interactuar con tu API. Ofrece ejemplos para los casos de uso comunes, que abarquen distintos escenarios de entrada y respuestas.

Usa un lenguaje claro y coherente #

Evita la jerga y utiliza una terminología clara y coherente en toda tu documentación. Así, tu API resultará más fácil de entender y de usar.

Incluye información sobre errores #

Documenta todos los errores posibles, incluidos los códigos de estado HTTP, los mensajes de error y las sugerencias de recuperación. Esto ayuda a los desarrolladores a depurar problemas y a gestionar los errores de forma eficaz.

Ejemplo:

paths:
  /users/{userId}:
    get:
      summary: Retrieve a user by ID
      parameters:
        - name: userId
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: A user object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '404':
          description: User not found
        '500':
          description: Internal server error

Conclusión #

Una documentación y una anotación eficaces son fundamentales para el éxito de cualquier API. OpenAPI proporciona un marco sólido para crear documentación detallada y fácil de usar que mejora la experiencia de los desarrolladores. Al aprovechar las funciones avanzadas de OpenAPI, como los valores de ejemplo, las descripciones en Markdown, los enlaces a documentación externa y las anotaciones para la generación de código, puedes crear una documentación completa que responda a las necesidades de tus usuarios.

Para consultar más recursos sobre OpenAPI, visita la OpenAPI Initiative y explora herramientas como Swagger, Redoc y Postman. Si sigues las buenas prácticas y utilizas las herramientas adecuadas, podrás asegurarte de que la documentación de tu API sea clara, completa y esté siempre actualizada, y ofrecer así una experiencia fluida tanto a desarrolladores como a usuarios.


Última actualización: 29 de mayo de 2024.

Este sitio web no está afiliado a la OpenAPI Initiative.