Swagger教程三

Posted kkxwze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swagger教程三相关的知识,希望对你有一定的参考价值。

Springfox-Swagger教程优化

一、前言

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

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

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

为保证项目安全性和保密性通常我们的接口都是带有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中修改如上代码就行了.

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

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

https://blog.csdn.net/qq_25814003/article/details/82017668

以上是关于Swagger教程三的主要内容,如果未能解决你的问题,请参考以下文章

springboot swagger教程😀

Swagger入门教程(转)

三Swagger配置

Spring Boot2 系列教程 | 集成 Swagger2 构建强大的 RESTful API 文档

swagger2注解使用教程

[转]swagger2 入门教程