Код: Выделить всё
public static class IEndpointRouteBuilderExtensions
{
public static IEndpointRouteBuilder MapGet(this IEndpointRouteBuilder builder, Delegate handler, [StringSyntax("Route")] string pattern = "")
{
Guard.Against.AnonymousMethod(handler);
builder.MapGet(pattern, handler)
.WithName(handler.Method.Name)
.WithOpenApi();
return builder;
}
}
< /code>
program.cs
var builder = WebApplication.CreateBuilder(args);
var services = builder.Services;
services.AddOpenApi();
services.AddEndpointsApiExplorer();
var app = builder.Build();
app.UseHttpsRedirection();
app.MapEndpoints(); // Maps endpoints via reflection
app.MapOpenApi(); // OpenAPI support
app.Run();
< /code>
webapplicationextensions.cs
public static class WebApplicationExtensions
{
public static RouteGroupBuilder MapGroup(this WebApplication app, EndpointGroupBase group)
{
var groupName = group.GetType().Name;
return app
.MapGroup($"/api/{groupName}")
.WithGroupName(groupName)
.WithTags(groupName)
.WithOpenApi();
}
public static WebApplication MapEndpoints(this WebApplication app)
{
var endpointGroupType = typeof(EndpointGroupBase);
var assembly = Assembly.GetExecutingAssembly();
var endpointGroupTypes = assembly.GetExportedTypes()
.Where(t => t.IsSubclassOf(endpointGroupType));
foreach (var type in endpointGroupTypes)
{
if (Activator.CreateInstance(type) is EndpointGroupBase instance)
{
instance.Map(app);
}
}
return app;
}
}
Код: Выделить всё
public class WeatherForecasts : EndpointGroupBase
{
public override void Map(WebApplication app)
{
app.MapGroup(this)
.MapGet(GetWeatherForecasts);
}
public async Task GetWeatherForecasts([AsParameters] WeatherService services)
{
var forecasts = await services.Queries.GetWeatherForecastsAsync();
return TypedResults.Ok(forecasts);
}
}
Нет ошибок, но настраиваемое настраивание , кажется, молча не зарегистрируется или не регистрируется. Конечная точка работает, если я проверяю его непосредственно через его URL -адрес, но невидимо OpenAPI. < /P>
Но когда я попробую таким образом: < /p>
Код: Выделить всё
app.MapGet("/test", ([FromServices] IWeatherForecastsQueries queries) =>
{
return Results.Ok(new[] { new WeatherForecast() });
}).WithOpenApi();
Подробнее здесь: https://stackoverflow.com/questions/796 ... -extension
Мобильная версия