Loading…
Loading…
16 карточек
What API versioning strategies exist in ASP.NET Core?
нажми, чтобы перевернуть
URL segment: /api/v1/users — most common, explicit, cacheable. Query string: /api/users?api-version=1.0. Header: X-Api-Version: 1.0 — clean URLs. Media type: Accept: application/json;v=2. Asp.Versioning.Http package. Default version for backward compat. Deprecated versions with Sunset header. API versioning + OpenAPI = separate Swagger doc per version.
builder.Services.AddApiVersioning(opt =>
{
opt.DefaultApiVersion = new(1, 0);
opt.AssumeDefaultVersionWhenUnspecified = true;
opt.ReportApiVersions = true; // api-supported-versions header
opt.ApiVersionReader = ApiVersionReader.Combine(
new UrlSegmentApiVersionReader(),
new HeaderApiVersionReader("X-Api-Version"));
}).AddApiExplorer(opt => opt.GroupNameFormat = "'v'VVV");
// Minimal API
var v1 = app.NewVersionedApi().MapGroup("/api/v{version:apiVersion}");
v1.MapGet("/users", GetUsersV1).HasApiVersion(1.0);
v1.MapGet("/users", GetUsersV2).HasApiVersion(2.0);Когда да
Public APIs with external consumers, breaking changes
Когда нет
Internal API with one consumer — just change and deploy together
Совет на собеседовании
URL versioning — simplest and most explicit. For internal APIs — header versioning to keep URLs unchanged.
Свайп вправо — знаю, влево — не знаю
