如何在Swagger-Net的ASP.NET Web API中为接口添加x-dev扩展?
为Swagger-Net的单个接口添加自定义扩展(x-dev)
步骤1:创建自定义特性类
首先定义对应x-dev扩展的自定义特性(C#中特性名称不能包含减号,故命名为XDevAttribute):
public class XDevAttribute : Attribute { public string Value { get; } public XDevAttribute(string value) { Value = value; } }
步骤2:实现IOperationFilter过滤器
创建操作过滤器,读取接口方法上的XDevAttribute并将其值注入到Swagger的扩展字段中:
public class XDevOperationFilter : IOperationFilter { public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription) { var xDevAttr = apiDescription.ActionDescriptor.GetCustomAttributes<XDevAttribute>().FirstOrDefault(); if (xDevAttr != null) { operation.extensions ??= new Dictionary<string, object>(); operation.extensions.Add("x-dev", xDevAttr.Value); } } }
步骤3:注册过滤器到Swagger配置
在Swagger配置文件(通常是SwaggerConfig.cs)中,添加这个自定义过滤器:
GlobalConfiguration.Configuration.EnableSwagger(c => { // 保留原有Swagger配置项 c.OperationFilter<XDevOperationFilter>(); // 注册自定义扩展过滤器 }) .EnableSwaggerUi(c => { // 保留原有UI配置项 });
步骤4:标记目标接口
现在可以直接在接口方法上使用[XDev]特性,对应需求中的[x-dev]:
[HttpGet] [XDev("Myself")] public async Task<User> GetAllUsers() { // 接口业务逻辑 }
完成以上配置后,生成的Swagger文档中,该接口的Operation节点下会自动添加"x-dev": "Myself"的自定义扩展字段。
内容的提问来源于stack exchange,提问作者Afsal
相关产品推荐
相关产品推荐

