Skip to content
IRC-CodingIRC-Coding
Versionado de APIREST APIGraphQLgRPCSchema EvolutionDeprecation

Versionado de API 2026: REST, GraphQL y gRPC

Estrategias de versionado de APIs: REST URI versioning, GraphQL schema evolution, gRPC Protobuf, deprecation y best practices.

S

schutzgeist

6 min read
Versionado de API 2026: REST, GraphQL y gRPC

Versionamiento de APIs 2026

El versionamiento de APIs permite evolucionar interfaces sin afectar a usuarios y clientes existentes.

Descripción general

El versionamiento de APIs es la gestión deliberada de cambios en una interfaz a lo largo del tiempo. Aplica por igual a REST APIs, esquemas GraphQL y servicios gRPC. El objetivo es introducir nuevas funcionalidades y correcciones sin romper clientes existentes. Las REST APIs suelen usar versionamiento en la ruta o en encabezados, GraphQL se basa en evolución de esquemas y deprecación, mientras que gRPC trabaja con Protobuf y versionamiento semántico. Independientemente del enfoque, los cambios deben categorizarse, comunicarse y documentarse. Una estrategia clara de versionamiento es un elemento central en la gestión del ciclo de vida de APIs y la estabilidad a largo plazo de una plataforma.

Componentes clave

Cambios compatibles e incompatibles

Un cambio compatible añade nuevas funcionalidades sin afectar a clientes existentes. Los ejemplos incluyen campos nuevos opcionales, endpoints adicionales o nuevos filtros. Un cambio incompatible altera el comportamiento existente, como eliminar campos, cambiar campos obligatorios o renombrar endpoints. Los cambios incompatibles requieren una nueva versión o al menos una migración cuidadosa.

Versionamiento de REST APIs

En REST APIs, URI Versioning y Header Versioning son las estrategias más comunes. URI Versioning utiliza rutas como /v1/products y es especialmente amigable con caché. Header Versioning transmite la versión a través de un encabezado como api-version: 1 o Accept: application/vnd.shop.v2+json. Content Negotiation es flexible pero más complejo.

Evolución de esquemas en GraphQL

GraphQL no utiliza versionamiento clásico en la ruta. En su lugar, el esquema evoluciona gradualmente. Se pueden añadir nuevos campos y tipos sin romper queries existentes. Los campos obsoletos se marcan con la directiva @deprecated. Los clientes deciden por sí mismos cuándo migrar a nuevos campos.

Versionamiento de gRPC y Protobuf

gRPC utiliza Protocol Buffers para definir mensajes. Se pueden añadir nuevos campos siempre que tengan números de campo cuidadosamente asignados. Los clientes antiguos ignoran campos desconocidos, los nuevos pueden trabajar con valores por defecto. El versionamiento semántico ayuda a comunicar releases Major, Minor y Patch.

Versionamiento semántico

El versionamiento semántico utiliza el formato Major.Minor.Patch. Major representa cambios incompatibles, Minor nuevas características compatibles y Patch correcciones de errores. Para APIs externas, a menudo solo se comunica públicamente la versión Major para mantener la complejidad baja para los usuarios.

Deprecación y migración

Cuando una versión o un campo ya no deba ser soportado, lo marcas como deprecated. Para GraphQL usas @deprecated, para REST encabezados como Deprecation o Sunset. Documenta la migración, informa a los usuarios con tiempo y establece una fecha clara de fin de vida.

Versionamiento en la documentación

La documentación debe estar disponible para cada versión, incluyendo changelog y guía de migración. Los usuarios deben identificar qué cambios trae una nueva versión y qué acciones son necesarias para migrar.

Caché y versionamiento

El versionamiento en la ruta es particularmente fácil de cachear porque cada versión tiene su propia URL. Con Header Versioning o GraphQL, los cachés deben configurarse para considerar las diferencias relevantes. De lo contrario, pueden ocurrir impactos de caché incorrectos.

Monitoreo y análisis de uso

Supervisa qué versiones se están utilizando. Así puedes determinar cuándo las versiones antiguas pueden desactivarse de forma segura. Rate Limiting y logging por versión ayudan a identificar uso y problemas.

API Governance

En organizaciones más grandes, API Governance regula cómo se gestionan las versiones. Los estándares para versionamiento, deprecación, comunicación y documentación aseguran consistencia entre múltiples equipos y APIs.

Ejemplo práctico

Una empresa ofrece una REST API y una GraphQL API. Se introduce un cambio incompatible en los datos de dirección en la REST API.

REST API v1:

GET /v1/customers/42
{
  "id": 42,
  "name": "Musterfirma",
  "address": "Musterstraße 12, 10115 Berlin"
}

REST API v2:

GET /v2/customers/42
{
  "id": 42,
  "name": "Musterfirma",
  "address": {
    "street": "Musterstraße 12",
    "zip": "10115",
    "city": "Berlin",
    "country": "DE"
  }
}

Evolución del esquema GraphQL:

type Customer {
  id: ID!
  name: String!
  address: String @deprecated(reason: "Use addressObject instead")
  addressObject: Address
}

type Address {
  street: String!
  zip: String!
  city: String!
  country: String!
}

En el caso de GraphQL, el cliente puede migrar gradualmente de address a addressObject sin cambiar la versión de API en la ruta. En REST, el cliente cambia de v1 a v2.

FAQ: Versionamiento de APIs

1. ¿Qué es el versionamiento de APIs?

El versionamiento de APIs es la gestión de cambios en una interfaz para introducir nuevas características sin afectar a clientes existentes.

2. ¿Cómo se versionan las REST APIs más comúnmente?

Las REST APIs se versionan típicamente con URI Versioning o Header Versioning. URI Versioning usa rutas como /v1/customers, Header Versioning transmite la versión a través de un encabezado HTTP.

3. ¿Cómo funciona el versionamiento en GraphQL?

GraphQL trabaja con evolución de esquemas. Se añaden nuevos campos y los antiguos se marcan con @deprecated. Los clientes deciden por sí mismos cuándo migrar a nuevos campos.

4. ¿Cómo se versionan las APIs gRPC?

Las APIs gRPC se versionan con Protocol Buffers y versionamiento semántico. Se añaden nuevos campos con números de campo, los clientes antiguos ignoran campos desconocidos.

5. ¿Qué es el versionamiento semántico?

El versionamiento semántico utiliza el formato Major.Minor.Patch. Major indica cambios incompatibles, Minor nuevas características compatibles y Patch correcciones de errores.

6. ¿Qué es la evolución de esquemas?

La evolución de esquemas es el desarrollo gradual de un esquema de API, típicamente sin nuevas versiones en la ruta. Es especialmente común en GraphQL y gRPC.

7. ¿Qué significa deprecación?

La deprecación significa que una versión, un endpoint o un campo se marca como obsoleto. Los usuarios son informados y tienen tiempo para migrar.

8. ¿Cuál es la diferencia entre cambios compatibles e incompatibles?

Los cambios compatibles extienden la API sin afectar a clientes existentes. Los cambios incompatibles alteran el comportamiento existente y requieren una nueva versión o migración.

9. ¿Qué es Content Negotiation?

Content Negotiation utiliza el encabezado Accept para negociar versión y formato. Ejemplo: Accept: application/vnd.shop.v2+json. Es flexible pero más complejo que URI Versioning.

10. ¿Cómo se comunica el fin de una versión de API?

El fin de una versión de API se comunica mediante avisos de deprecación, encabezado Sunset, notificaciones por correo electrónico, changelogs y guías de migración. Proporcionar suficiente tiempo de anticipación es importante.

11. ¿Qué es el encabezado Sunset?

El encabezado Sunset indica el fin de vida planificado de una versión de API. Es legible por máquinas y ayuda a los clientes a reconocer automáticamente cuándo se desactivará una versión.

12. ¿Debe operarse siempre muchas versiones de API simultáneamente?

No, demasiadas versiones aumentan el esfuerzo de mantenimiento y los costos. Soporta solo tantas versiones como sea necesario y comunica fechas de desactivación claras.

13. ¿Cómo afecta el versionamiento al caché?

URI Versioning es particularmente amigable con caché porque versiones diferentes tienen URLs diferentes. Con Header Versioning o GraphQL, los cachés deben considerar los diferenciadores relevantes.

14. ¿Qué es API Governance en el contexto del versionamiento?

API Governance establece reglas para versionamiento, deprecación, comunicación y documentación. En organizaciones más grandes, garantiza consistencia y calidad.

15. ¿Cuál es el mejor modelo de versionamiento?

No existe un modelo universalmente mejor. Las REST APIs se benefician frecuentemente de URI Versioning, GraphQL de evolución de esquemas y gRPC de Protobuf con versionamiento semántico. Lo importante es que la estrategia se comunique de forma clara y consistente.

Continúa con el camino de aprendizaje sobre APIs

El siguiente artículo en el camino de aprendizaje sobre APIs aborda Idempotencia en el diseño de APIs: Webhooks y ejemplos prácticos — por qué las operaciones idempotentes son esenciales para APIs confiables.

Fuentes

  1. https://www.rfc-editor.org/rfc/rfc9110
  2. https://graphql.org/learn/best-practices/
  3. https://protobuf.dev/programming-guides/proto3/

Lecturas recomendadas sobre desarrollo de APIs

Si quieres profundizar en versionado de APIs, diseño de APIs y arquitectura de software, te recomendamos los siguientes libros:

Keine Bücher für Kategorie "api-development" gefunden.

Volver al blog
Share:

Entradas relacionadas