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

铁佛  金牌会员 | 2022-6-22 09:06:29 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 540|帖子 540|积分 1620

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

1,添加 HttpHeaderFilter 参数设置类

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

代码如下:
  1. 1 public class HttpHeaderFilter : IOperationFilter
  2. 2 {
  3. 3     /// <summary>
  4. 4     /// 给Swagger添加Header头部参数
  5. 5     /// </summary>
  6. 6     /// <param name="operation"></param>
  7. 7     /// <param name="context"></param>
  8. 8     public void Apply(OpenApiOperation operation, OperationFilterContext context)
  9. 9     {
  10. 10         operation.Parameters = new List<OpenApiParameter>
  11. 11         {
  12. 12             new OpenApiParameter
  13. 13             {
  14. 14                 Name = "token",
  15. 15                 Description = "Token",
  16. 16                 In = ParameterLocation.Header,
  17. 17                 Required = false
  18. 18             },
  19. 19             new OpenApiParameter
  20. 20             {
  21. 21                 Name = "TermID",
  22. 22                 Description = "学期ID",
  23. 23                 In = ParameterLocation.Header,
  24. 24                 Required = false
  25. 25             },
  26. 26             new OpenApiParameter
  27. 27             {
  28. 28                 Name = "ContainerID",
  29. 29                 Description = "组织ID",
  30. 30                 In = ParameterLocation.Header,
  31. 31                 Required = false
  32. 32             }
  33. 33         };
  34. 34     }
  35. 35 }
复制代码
参数说明:
Name:就是设置header的字段属性名称,在同一个参数位置,名称必须唯一,且大小写敏感。
In:参数位置,常见有三个:

  • path:参数成为操作路径(URL)的一部分,俗称路径参数。路径参数的 required 字段必需为 true
  • query:参数成为操作路径(URL)查询参数的一部分,俗称查询参数,如/users?id=123456
  • header:参数成为 HTTP 请求头的一部分,俗称请求头参数。注意:请求头是大小写敏感的
Required:是否必需,默认值是 false
我们按照 In:参数位置的类型分别设置成 Header、Query、Path,看是什么效果
 
2, 使用参数设置类 HttpHeaderFilter 

上边的参数类已经创建好,下边看下如何使用、使用很简单,代码如下(加红标粗的代码部分)
  1. 1 public void ConfigureServices(IServiceCollection services)
  2. 2 {
  3. 3     services.AddControllers();
  4. 4
  5. 5     //swagger
  6. 6     services.AddSwaggerGen(options =>
  7. 7     {
  8. 8         options.SwaggerDoc("swaggerapi", new OpenApiInfo
  9. 9         {
  10. 10             Version = "v1",
  11. 11             Title = "swaggerapi API文档",
  12. 12             Description = "swaggerapi API的使用说明"
  13. 14         });
  14. 15
  15. 16         // 为 Swagger JSON and UI设置xml文档注释路径
  16. 17         // 获取应用程序所在目录(绝对路径,不受工作目录影响,建议采用此方法获取路径)
  17. 18         // 此方式适用于Windows/Linux 平台
  18. 19         var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
  19. 20         var xmlPath = Path.Combine(basePath, "NetCore.Swagger.xml");
  20. 21         options.IncludeXmlComments(xmlPath);
  21. 22
  22. 23         //添加自定义header授权参数
  23. 24         <strong>options.OperationFilter<HttpHeaderFilter>(Array.Empty<object>());
  24. </strong>25     });
  25. 26 }
复制代码
完毕!!!
出处:https://www.cnblogs.com/peterzhang123本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
来源:https://www.cnblogs.com/peterzhang123/archive/2022/06/18/16388451.html
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表