Swagger教程三

Springfox-Swagger教程优化

一、前言

        上一章节我们说的是swaggerfox-swagger也就是swagger2,因为章节太长我讲解的是原生态的,接下来我们说的是swagger2优化版

        Swagger是当前最好用的Restful API文档生成的开源项目,随着swagger的越来越流行,原生的swagger2已经不能满足实际的需求了。所以为了适应项目的需要,可以对swagger2进行适当优化。

        如果大家觉得不错,欢迎点赞,留言评论。

        PS文章底部是我的代码下载链接,大家可以自行下载。

 

二、优化方式一(添加令牌)

        为保证项目安全性和保密性通常我们的接口都是带有token身份认证的

        但是token怎么办呢?必须要在每一个请求的header都加上token。

效果展示

       通过输入http://localhost:8080/项目跟路径/swagger-ui.html直接可以访问自己的页面。我的是http://localhost:8080/springfox_springmvc/swagger-ui.html

        因为页面是封装好的,所以后缀swagger-ui.html是不变的

代码展示

 

        上一章节我们配置好原生的swagger2以后,只需要在config中修改如上代码就行了.

这样在调用接口的时候,每个接口都需要x-access-token验证,如果验证不通过则无法调用接口,这样就不用,每次接口传参的时候都得传x-access-token,当然验证得在接口里写,这个就不用我多说了吧,如果有不明白的,可以留言评论。

扩展

  1. 上面的方式适合接口通用的任何参数不仅仅是header里的,只需修改parameterType(。。。)里的类型即可。很好用的一个优化。
  2. 上述代码中有个.path(),这是同一个接口有多个项目,接口区分用的时候弄得,个人建议注释点,因为一般这种接口风格只对应一个项目

弊端

      当然如果仅仅是token验证,博主其实不建议用这个优化,因为这个每次都得调用接口输入token太麻烦,其实token输入一次就行了。

 

三、优化方式二(token一次验证)

         其实token一般情况下只需要进行一次验证,同一个项目token应该是一样的,上一个方式其实不适合token验证,因为每次调用接口都需要输入token,所以就有了下面的优化方式二。

效果展示

        通过输入http://localhost:8080/项目跟路径/swagger-ui.html直接可以访问自己的页面。我的是http://localhost:8080/springfox_springmvc/swagger-ui.html

        因为页面是封装好的,所以后缀swagger-ui.html是不变的

代码展示

 

上一章节我们配置好原生的swagger2以后,只需要在config中修改如上代码就行了.

  1. 通过Swagger2的securitySchemes配置全局参数:如下列代码所示,securitySchemes的ApiKey中增加一个名为“Authorization”,type为“header”的参数。
  2. 在Swagger2的securityContexts中通过正则表达式,设置需要使用参数的接口(或者说,是去除掉不需要使用参数的接口),如下列代码所示,通过PathSelectors.regex("^(?!auth).*$"),所有包含"auth"的接口不需要使用securitySchemes。即不需要使用上文中设置的名为“Authorization”,type为“header”的参数
  3. 设置完成后进入SwaggerUI,右上角出现“Authorization”按钮,点击即可输入我们配置的参数。
    对于不需要输入参数的接口(上文所述的包含auth的接口),在未输入Authorization参数就可以访问。
    其他接口则将返回401错误。点击右上角“Authorization”按钮,输入配置的参数后即可访问。参数输入后全局有效,无需每个接口单独输入。

         这样在只需输入一次token验证,如果验证不通过则无法调用接口,,当然验证得在接口里写,这个就不用我多说了吧,如果有不明白的,可以留言评论。

 

四、下载地址

Jar包,项目demo,等我都已经上传了,大家可直接下载使用。

download:https://download.csdn.net/download/qq_25814003/10622612

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页