Swagger 通过拦截器(Interceptor)配置默认访问参数
背景
最近在开发中遇到了一个使用场景,在我们的 rest 接口中,需要新增一个自定义的请求头,来标识一些关键信息(不涉及安全性),这个也很简单,只需要在框架的入口筛选器(Filter)中,验证指定的 header 就可以了(我这里还是以 dotnetcore webapi 框架为例)。
但这个对于客户端来说并不没有困难,只需要增加一个 header 参数就可以了,但在开发环境下,由于集成了 swagger 文档,所以就需要在 swaggerui 中也增加这个参数,才能更方便的测试接口效果。而怎么方便快速,以最小的成本来实现这个效果呢,就需要用到 swagger 的拦截器功能了。
实现
在使用拦截器之前,通常的做法是自定义一个 Filter 类,继承 swagger 的 IOperationFilter 接口,然后重写实现 Apply 方法,之后再将重载方法注入到 swagger 的配置当中(代码不列了)。
通用做法的好处就是自定义程度较高,可以实现丰富的功能,但坏处就是写的代码有点多。
有了拦截器后,这个操作就变得更加简单了,简直懒人福利。
只需要在 startup 里注入 swaggerui 的地方新增这样一句
即可实现同样的效果。
来看下效果图,在注入参数之前,访问指定接口,会直接被拦截,返回警告提示。
通过 postman 客户端增加 header 参数,则可以正常访问
而在配置好拦截器之后,就可以方便的在文档里调试了
可以看到,框架自动帮我们构造好了这个 header 请求。
好了,大概就这样,关于 swagger 更多的配置,可以看官方介绍
版权声明: 本文为 InfoQ 作者【为自己带盐】的原创文章。
原文链接:【http://xie.infoq.cn/article/b5b9b95d11a38c825d0a16287】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论