You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Minimal API:如何通过NSwag获取端点的EndpointFilter

在NSwag OperationProcessor中获取Minimal API的EndpointFilter

要获取端点上绑定的所有EndpointFilter,可以通过OperationProcessorContext的ApiDescription.ActionDescriptor.EndpointMetadata直接筛选,避免冗余代码。修改你的HeaderOperationProcessor如下:

public class HeaderOperationProcessor : IOperationProcessor
{
    public bool Process(OperationProcessorContext context)
    {
        // 获取当前端点的所有EndpointFilter元数据
        var endpointFilters = context.ApiDescription.ActionDescriptor.EndpointMetadata
            .OfType<EndpointFilterMetadata>();

        // 遍历过滤器,按需处理(示例:判断是否包含HeaderFilter)
        foreach (var filterMetadata in endpointFilters)
        {
            if (filterMetadata.FilterType == typeof(HeaderFilter))
            {
                var header = new OpenApiParameter()
                {
                    Name = "CustomHeader",
                    Kind = OpenApiParameterKind.Header,
                    IsRequired = true,
                    Type = JsonObjectType.String
                };

                context.OperationDescription.Operation.Parameters.Add(header);
                break; // 避免重复添加
            }
        }

        return true;
    }
}

关键说明

  • EndpointFilterMetadata是Minimal API中存储过滤器的元数据类型,每个通过AddEndpointFilter<T>()添加的过滤器都会对应一个该类型的元数据项
  • 通过OfType<EndpointFilterMetadata>()可以直接筛选出所有过滤器元数据,无需复杂的冗余判断
  • 你可以根据filterMetadata.FilterType判断具体是哪个过滤器,然后执行对应的OpenAPI文档修改逻辑

内容的提问来源于stack exchange,提问作者Stagdul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 13:37:36