Skip to content

Source Generator to help create minimal api endpoint mappings.

License

Notifications You must be signed in to change notification settings

distantcam/EndpointGenerator

Repository files navigation

EndpointGenerator

Build Status NuGet Status Nuget Downloads

EndpointGenerator is a Roslyn Source Generator to add methods to call marked minimal api methods.

Contents

NuGet packages

https://nuget.org/packages/EndpointGenerator/

Your code

public static class Basic
{
    [EndpointGenerator.EndpointBuilder]
    public static void Simple(Microsoft.AspNetCore.Routing.IEndpointRouteBuilder builder) =>
        builder.MapGet("/simple", () => TypedResults.Ok("Hello World"));

    [EndpointGenerator.EndpointBuilder]
    public static void Grouped(Microsoft.AspNetCore.Routing.RouteGroupBuilder builder) =>
        builder.MapGet("/grouped", () => TypedResults.Ok("Hello World"));

    [EndpointGenerator.EndpointGroupBuilder("prefix")]
    public static void GroupedWithPrefix(Microsoft.AspNetCore.Routing.RouteGroupBuilder builder) =>
        builder.MapGet("/grouped", () => TypedResults.Ok("Hello World"));
}

snippet source | anchor

What gets generated

// The name will be "Map[AssemblyName]Endpoints"
public static IEndpointRouteBuilder MapEndpointGeneratorExampleEndpoints(this IEndpointRouteBuilder builder)
{
    Basic.Simple(builder);
    var group = builder.MapGroup("").WithName("Basic");
    Basic.Grouped(group);
    group = builder.MapGroup("prefix").WithName("Basic");
    Basic.GroupedWithPrefix(group);
    return builder;
}

snippet source | anchor

How to use

var builder = WebApplication.CreateBuilder();
var app = builder.Build();

app.MapEndpointGeneratorExampleEndpoints();

app.Run();

snippet source | anchor

About

Source Generator to help create minimal api endpoint mappings.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Languages