.Net Core 5.x Api开发笔记 — Swagger设置Header(九)

  • .Net Core 5.x Api开发笔记 — Swagger设置Header(九)已关闭评论
  • 311 次浏览
  • A+
所属分类:.NET技术
摘要

Swagger的基础使用可以参考之前的文章:.Net Core 5.x Api开发笔记 — Swagger(七)这里只记录如何给Swagger添加Header,要达到的效果如下图所示:

Swagger的基础使用可以参考之前的文章:.Net Core 5.x Api开发笔记 -- Swagger(七)

这里只记录如何给Swagger添加Header,要达到的效果如下图所示:

.Net Core 5.x Api开发笔记 -- Swagger设置Header(九)

1,添加 HttpHeaderFilter 参数设置类

在项目中添加一个参数设置类,命名自定义就行,如下图所示:

.Net Core 5.x Api开发笔记 -- Swagger设置Header(九)

代码如下:

 1 public class HttpHeaderFilter : IOperationFilter  2 {  3     /// <summary>  4     /// 给Swagger添加Header头部参数  5     /// </summary>  6     /// <param name="operation"></param>  7     /// <param name="context"></param>  8     public void Apply(OpenApiOperation operation, OperationFilterContext context)  9     { 10         operation.Parameters = new List<OpenApiParameter> 11         { 12             new OpenApiParameter 13             { 14                 Name = "token", 15                 Description = "Token", 16                 In = ParameterLocation.Header, 17                 Required = false 18             }, 19             new OpenApiParameter 20             { 21                 Name = "TermID", 22                 Description = "学期ID", 23                 In = ParameterLocation.Header, 24                 Required = false 25             }, 26             new OpenApiParameter 27             { 28                 Name = "ContainerID", 29                 Description = "组织ID", 30                 In = ParameterLocation.Header, 31                 Required = false 32             } 33         }; 34     } 35 }

参数说明:

Name:就是设置header的字段属性名称,在同一个参数位置,名称必须唯一,且大小写敏感。

In:参数位置,常见有三个:

  • path:参数成为操作路径(URL)的一部分,俗称路径参数。路径参数的 required 字段必需为 true
  • query:参数成为操作路径(URL)查询参数的一部分,俗称查询参数,如/users?id=123456
  • header:参数成为 HTTP 请求头的一部分,俗称请求头参数。注意:请求头是大小写敏感的

Required:是否必需,默认值是 false

我们按照 In:参数位置的类型分别设置成 Header、Query、Path,看是什么效果

.Net Core 5.x Api开发笔记 -- Swagger设置Header(九) .Net Core 5.x Api开发笔记 -- Swagger设置Header(九)

2, 使用参数设置类 HttpHeaderFilter 

上边的参数类已经创建好,下边看下如何使用、使用很简单,代码如下(加红标粗的代码部分)

 1 public void ConfigureServices(IServiceCollection services)  2 {  3     services.AddControllers();  4   5     //swagger  6     services.AddSwaggerGen(options =>  7     {  8         options.SwaggerDoc("swaggerapi", new OpenApiInfo  9         { 10             Version = "v1", 11             Title = "swaggerapi API文档", 12             Description = "swaggerapi API的使用说明" 14         }); 15  16         // 为 Swagger JSON and UI设置xml文档注释路径 17         // 获取应用程序所在目录(绝对路径,不受工作目录影响,建议采用此方法获取路径) 18         // 此方式适用于Windows/Linux 平台 19         var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location); 20         var xmlPath = Path.Combine(basePath, "NetCore.Swagger.xml"); 21         options.IncludeXmlComments(xmlPath); 22  23         //添加自定义header授权参数 24         options.OperationFilter<HttpHeaderFilter>(Array.Empty<object>()); 25     }); 26 }

完毕!!!