Documentación de API versionadas
Exponga documentación para varias versiones de la API.
Documentación de API versionadas es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.
Un documento por versión
Cuando una API tiene varias versiones, normalmente necesita un documento de OpenAPI independiente para cada versión, de modo que los consumidores vean únicamente los endpoints relevantes para ellos.
// /openapi/v1.json -> only v1 endpoints
// /openapi/v2.json -> only v2 endpointsEl proveedor de descripciones de versiones de API
Asp.Versioning expone IApiVersionDescriptionProvider, que enumera todas las versiones de API descubiertas. Recorra esa colección para registrar un documento por versión.
var provider = app.Services
.GetRequiredService<IApiVersionDescriptionProvider>();
foreach (var desc in provider.ApiVersionDescriptions)
{
// desc.GroupName is e.g. "v1", "v2"
}Registro de un documento por versión
Llame a AddOpenApi una vez por cada grupo de versiones y asigne a cada documento el nombre del grupo.
builder.Services
.AddApiVersioning()
.AddApiExplorer(o =>
{
o.GroupNameFormat = "'v'VVV";
o.SubstituteApiVersionInUrl = true;
});
builder.Services.AddOpenApi("v1");
builder.Services.AddOpenApi("v2");Filtrado de endpoints en el documento correcto
Use un transformador de documentos o el predicado ShouldInclude para que cada documento contenga únicamente los endpoints de su versión, identificados por el nombre del grupo.
builder.Services.AddOpenApi("v1", options =>
{
options.ShouldInclude = description =>
description.GroupName == "v1";
});Mapeo de los documentos
MapOpenApi, con el patrón predeterminado, sirve cada documento con nombre en /openapi/{documentName}.json.
app.MapOpenApi();
// /openapi/v1.json and /openapi/v2.json both availableConfiguración de la información de cada documento
Asigne a cada documento de versión su propio título y versión mediante un transformador, para que la documentación se describa por sí misma.
builder.Services.AddOpenApi("v2", options =>
{
options.AddDocumentTransformer((doc, ctx, ct) =>
{
doc.Info.Title = "Catalog API v2";
doc.Info.Version = "2.0";
return Task.CompletedTask;
});
});Marcado de versiones obsoletas en la documentación
Si una versión está obsoleta, indíquelo en la descripción de su documento para que los consumidores vean la advertencia en la interfaz de usuario.
options.AddDocumentTransformer((doc, ctx, ct) =>
{
if (ctx.DocumentName == "v1")
doc.Info.Description = "DEPRECATED - migrate to v2.";
return Task.CompletedTask;
});Sustitución de la versión en las URL
SubstituteApiVersionInUrl = true reescribe el token de ruta {version:apiVersion} con la versión concreta, por ejemplo v1, en el documento, para que las rutas se lean con claridad.
// Without: /api/v{version}/products
// With: /api/v1/productsUna pestaña de interfaz por versión
La mayoría de los visores pueden mostrar un menú desplegable con todos los documentos. Configure la interfaz de usuario para que apunte al JSON de cada versión.
app.MapScalarApiReference(options =>
{
options.AddDocument("v1", "API v1", "/openapi/v1.json");
options.AddDocument("v2", "API v2", "/openapi/v2.json");
});Documentación de las estructuras de solicitudes y respuestas
Como la v2 puede cambiar los DTO, asigne a cada versión sus propios tipos de DTO. OpenAPI representará automáticamente esquemas distintos en cada documento.
// V1 DTO
public record ProductV1(int Id, string Name);
// V2 DTO (breaking change)
public record ProductV2(int Id, string Title, decimal Price);Integración de todos los elementos
El flujo completo consiste en configurar el versionado y API Explorer, registrar un documento de OpenAPI por versión con un filtro, asignarlos y hacer que la interfaz de usuario apunte a cada uno.
builder.Services.AddApiVersioning().AddApiExplorer(o =>
{
o.GroupNameFormat = "'v'VVV";
o.SubstituteApiVersionInUrl = true;
});
builder.Services.AddOpenApi("v1");
builder.Services.AddOpenApi("v2");
// ...
app.MapOpenApi();
app.MapScalarApiReference();Comprobación rápida
Confirme cómo se generan los documentos versionados.
Resumen
Ha documentado API versionadas:
- Registre un documento de OpenAPI con nombre por versión mediante
AddOpenApi("vN"). IApiVersionDescriptionProviderenumera las versiones;ShouldIncludefiltra los endpoints.SubstituteApiVersionInUrlrepresenta rutas con la versión concreta.- Haga que la interfaz de usuario apunte a cada documento para obtener una vista por versión.
Con esto finaliza el curso de versionado y OpenAPI.
Preguntas frecuentes
¿La lección «Documentación de API versionadas» es gratis?
Sí — el texto completo de «Documentación de API versionadas» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Documentación de API versionadas»?
Exponga documentación para varias versiones de la API. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar C# Academy?
No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Documentación de API versionadas»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de C# Academy?
Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Estrategias de versionado de API
- Configuración de Asp.Versioning
- Generación de documentos OpenAPI
- Documentación de API versionadas