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.
MIT License
2.05k stars 172 forks source link

Minimal AP Versioning #333

Closed MathavanN closed 5 months ago

MathavanN commented 5 months ago

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() });
    }
}
MathavanN commented 5 months ago

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

rjlacanlaled commented 2 months ago

Did you figure this out?