如何获取FastEndpoints中所有端点的列表?

问题描述 投票:0回答:1

在我们的应用程序中,我们需要获取运行时所有FastEndpoints端点的列表。

基本上我们需要所有端点的以下信息;

GroupName(如果不属于任何组则为空)

EndpointName(端点类名称)

路线(包括任何适用的路线前缀)

Http方法

之前,我们通过枚举

ControllerActionDescriptor
类型的
IActionDescriptorCollectionProvider
来获取 ApiController 的同类信息。

FastEndpoints 有

EndPointData
类,用于在调用
UseFastEndpoints
时内部扫描端点,但该类是内部的,不能在外部使用。

c# asp.net-core-webapi minimal-apis fast-endpoints
1个回答
0
投票

Swagger 是适合您的工具 - 它负责为您的 API 生成架构。它生成方便的 UI,并可以生成包含 API 相关信息的 JSON(模型、URL,您还可以自定义它以包含更多信息)。

Swagger 与 FastEndpoints 完美集成,示例应用程序:

  • 创建应用程序并安装必要的软件包:
    dotnet new web
    dotnet add package FastEndpoints
    dotnet add package Swashbuckle.AspNetCore
    
  • 将此代码添加到带有
    Endpoint
    示例类的程序启动中:
    using FastEndpoints;
    
    var builder = WebApplication.CreateBuilder();
    builder.Services.AddFastEndpoints();
    builder.Services.AddEndpointsApiExplorer();
    builder.Services.AddSwaggerGen();
    
    var app = builder.Build();
    
    app.UseSwagger();
    app.UseSwaggerUI();
    
    app.UseFastEndpoints();
    app.Run();
    
    public class MyRequest
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public int Age { get; set; }
    }
    
    public class MyResponse
    {
        public string FullName { get; set; }
        public bool IsOver18 { get; set; }
    }
    
    public class MyEndpoint : Endpoint<MyRequest, MyResponse>
    {
        public override void Configure()
        {
            Post("/api/user/create");
            AllowAnonymous();
        }
    
        public override async Task HandleAsync(MyRequest req, CancellationToken ct)
        {
            await SendAsync(new()
            {
                FullName = req.FirstName + " " + req.LastName,
                IsOver18 = req.Age > 18
            });
        }
    }
    
© www.soinside.com 2019 - 2024. All rights reserved.