.Net Core 5.x Api开发笔记 -- Swagger设置Header(九)
Swagger的基础使用可以参考之前的文章:.Net Core 5.x Api开发笔记 -- Swagger(七)这里只记录如何给Swagger添加Header,要达到的效果如下图所示:
https://img2022.cnblogs.com/blog/592073/202206/592073-20220618152128750-2048542634.png
1,添加 HttpHeaderFilter 参数设置类
在项目中添加一个参数设置类,命名自定义就行,如下图所示:
https://img2022.cnblogs.com/blog/592073/202206/592073-20220618151535575-1337354905.png
代码如下:
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,看是什么效果
https://img2022.cnblogs.com/blog/592073/202206/592073-20220618153217949-876996052.png https://img2022.cnblogs.com/blog/592073/202206/592073-20220618153328334-1249562189.png
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 <strong>options.OperationFilter<HttpHeaderFilter>(Array.Empty<object>());
</strong>25 });
26 }完毕!!!
出处:https://www.cnblogs.com/peterzhang123本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
来源:https://www.cnblogs.com/peterzhang123/archive/2022/06/18/16388451.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]