CarterCommunity / Carter

Carter is framework that is a thin layer of extension methods and functionality over ASP.NET Core allowing code to be more explicit and most importantly more enjoyable.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Minimal AP Versioning

MathavanN opened this issue · comments

I am trying to implement API Versioning in Minimal API
Below is my code sample. Carter support this implementation?

public class AboutEndPoints : ICarterModule
{
    public void AddRoutes(IEndpointRouteBuilder app)
    {
        var versionSet = app.NewApiVersionSet()
            .HasApiVersion(new ApiVersion(1.0))
            .HasApiVersion(new ApiVersion(2.0))
            .Build();

        var group = app.MapGroup("/api/about");

        group.MapGet("", GetAboutV1)
            .WithName("about")
            .WithOpenApi()
            .WithApiVersionSet(versionSet)
            .MapToApiVersion(1.0);

        group.MapGet("", GetAboutV2)
            .WithName("about")
            .WithOpenApi()
            .WithApiVersionSet(versionSet)
            .MapToApiVersion(2.0);
    }

    public static IResult GetAboutV1(HttpContext context)
    {
        var apiVersion = context.GetRequestedApiVersion();
        return TypedResults.Ok(new { data = "Product Service v1.0.0", apiVersion = apiVersion!.ToString() });
    }

    public static IResult GetAboutV2(HttpContext context)
    {
        var apiVersion = context.GetRequestedApiVersion();
        return TypedResults.Ok(new { data = "Product Service v1.0.0", apiVersion = apiVersion!.ToString() });
    }
}

.WithName("about") should be unique for API Versioning

Did you figure this out?