Swagger 是个好东西,对于前后端分离的网站来说,不仅是提高前后端开发人员沟通效率的利器,也大大方便了后端人员测试 API。有时候,API 中可能需要在 Header 中设置认证参数,比如 authToken,这样的功能我们通常是使用 ActionFilter 实现的,这就会导致 swagger UI 中缺少 authToken 字段,下面就来介绍解决这个问题的办法。

创建一个过滤器类,内容如下:

/// <summary>
/// this class is for swagger to generate AuthToken Header filed on swagger UI
/// </summary>
public class AddAuthTokenHeaderParameter : IOperationFilter
{
public void Apply(Operation operation, OperationFilterContext context)
{
if (operation.Parameters == null)
operation.Parameters = new List<IParameter>();
var attrs = context.ApiDescription.GetActionAttributes();
foreach (var attr in attrs)
{
// 如果 Attribute 是我们自定义的验证过滤器
if (attr.GetType() == typeof(Auth))
{
operation.Parameters.Add(new NonBodyParameter()
{
Name = "AuthToken",
In = "header",
Type = "string",
Required = false
});
}
}
}
}

然后在配置 Swagger 的地方,做一些修改:

services.AddSwaggerGen(c =>
{
c.SingleApiVersion(new Info()
{
Version = "v1",
Title = "API 文档",
Description = "系统的 API 文档"
});
c.OperationFilter<AddAuthTokenHeaderParameter>(); // 手动高亮
});

最后,dotnet run

这样,Swagger UI 中就显示了附加在 header 中的参数——AuthToken,还要啥 Postman。

ASP.NET Core 在 Swagger UI 中显示自定义的 Header Token的更多相关文章

  1. asp.net core 集成swagger ui

    什么是Swagger? 说swagger 之前,我们先说一下OpenApi 规范. OpenApi 是一种和语言无关的用于描述RESTAPIs 接口功能的一种规范,对RESTAPIs 接口的描述包括: ...

  2. ASP.NET Core 3.0 WebApi中使用Swagger生成API文档简介

    参考地址,官网:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/getting-started-with-swashbuckle?view ...

  3. ASP.NET Core中显示自定义错误页面-增强版

    之前的博文 ASP.NET Core中显示自定义错误页面 中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取. 在这篇博文中改用middleware实现,并且放在独 ...

  4. android 在你的UI中显示Bitmap - 开发文档翻译

    由于本人英文能力实在有限,不足之初敬请谅解 本博客只要没有注明“转”,那么均为原创,转贴请注明本博客链接链接 Displaying Bitmaps in Your UI 在你的UI中显示Bitmap ...

  5. 在ASP.NET Core的startup类中如何使用MemoryCache

    问: 下面的代码,在ASP.NET Core的startup类中创建了一个MemoryCache并且存储了三个键值“entryA”,“entryB”,“entryC”,之后想在Controller中再 ...

  6. 从ASP.Net Core Web Api模板中移除MVC Razor依赖项

    前言 :本篇文章,我将会介绍如何在不包括MVC / Razor功能和包的情况下,添加最少的依赖项到ASP.NET Core Web API项目中. 一.MVC   VS WebApi (1)在ASP. ...

  7. DedeCMS中实现在顶层banner中显示自定义登录信息

    一.需求描述 dedeCMS自带的模板中有互动中心模块,如下图所示: 由于会员登陆对我来说不是网站的重要模块且默认DedeCMS的会员中心模块的初始化很慢,常会显示“正在载入中,请稍候...”, 所以 ...

  8. ASP.NET Core中显示自定义错误页面

    在 ASP.NET Core 中,默认情况下当发生500或404错误时,只返回http状态码,不返回任何内容,页面一片空白. 如果在 Startup.cs 的 Configure() 中加上 app. ...

  9. asp.net core 使用 swagger 生成接口文档

    参考地址:http://www.cnblogs.com/daxnet/p/6181366.html http://www.jianshu.com/p/fa5a9b76f3ed 微软参考文档:https ...

随机推荐

  1. 转C#窗体无法接受Keydown事件

    问题一描述:当新建一个窗体时,添加KeyDown事件后,会正常处理,但是当添加有控件时,比如Button,TextBox,不会触发窗体的KeyDown事件,也没有调用KeyDown事件的处理程序. 原 ...

  2. sublime sublimeCodeIntel插件 配置

    安装完成后, 弹出一个说明 页面, 不用 管 .可到了这里就是没有提示信息, 忽略 配置sublimeCodeIntel的config文件,告诉他我们需要javascript的提示. 法一: 通过su ...

  3. VS中使用svn注意事项

    1.程序需定期编译通过后上传SVN,每天可上传多次,根据个人程序开发进度决定,但每天晚下班前必须将当天的程序编译调试通过并上传SVN.每天早上上班首先需要更新SVN最新版本. 上传的工作流程应该是,更 ...

  4. Redis数据类型介绍

    Redis 数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String(字符串) st ...

  5. Emacs 16进制模式

    http://blog.163.com/lan_ne/blog/static/1926701702012112272840545/ ALT+X hexl-mode   进入16进制模式 在这一模式,直 ...

  6. SQL CURSOR

    SET NOCOUNT ON; DECLARE @vendor_id int, @vendor_name nvarchar(50),     @message varchar(80), @produc ...

  7. 关于移动app开发的一些不错的站点

    1. http://www.androiddevtools.cn      Android Dev Tools官网地址:www.androiddevtools.cn 收集整理Android开发所需的A ...

  8. varnish4.1 配置文件default.vcl

    varnish4.1 配置文件default.vcl # This .x VCL file vcl 4.0; backend default { .host = "127.0.0.1&quo ...

  9. sprintf()函数的用法

    Visual C++ sprintf()函数用法 转:http://blog.csdn.net/masikkk/article/details/5634886 在将各种类型的数据构造成字符串时,spr ...

  10. js 四舍五入

    举例excel: ROUND 会四舍五入的:ROUNDDOWN 取小数点后两位数据,不管进位问题:ROUNDUP 取小数点后两位数据,只要有第三位小数都会进位的.关键看你取数的要求   在js如果要求 ...