当前位置:网站首页 > R语言数据分析 > 正文

swagger2的使用(swagger3使用)



        swagger是当下比较流行的实时接口文文档生成工具。接口文档是当前前后端分离项目中必不可少的工具,在前后端开发之前,后端要先出接口文档,前端根据接口文档来进行项目的开发,双方开发结束后在进行联调测试。

        所以接口文档其实就是开发之前双方之间的一种约定。通常接口文档分为离线的和实时的。离线的接口文档工具有: word(相当于没说), YAPI, 小幺鸡等,这种文档需要程序员在上面编写,也一般具备接口测试功能。通常是由开发人员先在离线接口文档上编写信息,然后交给前端人员参照开发。最大的弊端是当我们的接口程序发生变动时,需要回过头来维护上面的内容,很麻烦,是真的麻烦。

        实时接口文档就是可以根据我们的代码来自动生成相应的接口文档,优点就是我们的代码发生变化时,生成的接口文档也会自动更新,无需我们关注修改,主需要按时发布即可。但是由于是根据代码自动生成的,所以最大的弊端就是代码侵入性强,需要我们在项目代码中集成生成接口文档的相关代码。实时接口文档现在的方案有很多,但是swagger还是其中比较有影响力的一个

        官网地址: swagger.io 当然,官网都是英文的,看起来还是比较麻烦的。建议大家直接按照我的步骤来,还是很简单的。

        同时在说一点: swagger分为swagger2 和swagger3两个常用版本。二者区别不是很大,主要对于依赖和注解进行了优化。swagger2需要引入2个jar包,swagger3只需要一个,用起来没有什么大的区别。下面以swagger2为例。

 
  

        首先需要添加一个注解 : @EnableSwagger2。 这个注解我们可以添加到SpringBoot的启动类上,也可以自定义一个配置类,放到上面。添加了这个注解以后,就代表我们已经在项目中开启了Swagger的功能。

        我们采用第二种方式,自己定义一个配置类,正好还可以添加一个Docket配置(Swagger API 摘要对象)。 所谓Docket配置,就是一组(一个项目或一个版本)接口文档的配置,比如设置名称, 联系人等等。

        我们在config文件夹下,添加一个SwaggerConfig类。

        在 SwaggerConfig 中添加两个方法:(其中一个方法是为另一个方法作辅助的准备工作)
api()方法使用 @Bean,在启动时初始化,返回实例 Docket(Swagger API 摘要对象),这里需要注意的是  指定需要扫描的包路路径,只有此路径下的 Controller 类才会自动生成 Swagger API 文档。

 
  

上面就是一个配置案例, 还设置了一个setToken方法,代表生成文档的所有接口中,都要包含一个header类型的token参数。

        我们接口文档的直接描述主要就是在Controller这一层,比如这个接口的功能,参数的名称,返回值的名称等。这些值我们都需要在Controller上通过给方法上,请求参数和返回参数上添加对应的注解,swagger才能帮我们生成相应的接口文档。这也就是我前面提到的对现有代码的侵入性。

        首先先创建一个vo的包,里边写我们的请求和相应参数,使用JavaBean定义出请求和响应的数据结构。注意这里要添加相应的注解

请求参数类UserVO实体

 
  

请求响应类User实体 

 
  

TestController 

 

 
  

启动项目

        当启动项目的时候,我们发现会出现错误,异常原因是:SpringBoot2.6版本和Swagger2.9.2不兼容导致的。,也有人说是由于guava这个包的版本过低导致的,所以最简单的解决办法是将SpringBoot的版本改到2.6以下。当然,如果项目中的SpringBoot版本不能修改的话,我们还可以在application.yml配置文件中进行修改。

修改application.yml配置文件
PathPatternMatcher匹配路径,Swagger引用的Springfox使用的路径匹配是基于AntPathMatcher的。
所以要想解决,添加配置,将springBoot MVC的路劲匹配模式修改一下即可。

application.yml

 
  

 

再次重启项目,问题解决。

测试访问

访问地址: ip:端口号/swagger-ui.html

正常情况就可以看到我们的界面了。一会再说非正常情况。由于我们只给用户接口添加了注解,所有用户接口是可以直接观察中文文档的。而剩下的两个接口,由于没添加注解,所以都是以默认的形式展示的。

点开接口,我们可以看到接口中的想详细信息

 点击model,可以看到字段的中文描述。点击 Try it out,就可以直接调试接口。同时注意接口中都让填一个token,这就是我们之前的设置成效了。

截止到目前其实swagger的集成就已经完毕了,主要就是根据我们的注解生成文档,并且可以在线调用调试。开发的时候,我们只需要把Controller这一层的请求和响应,以及方法描述等内容先开发完毕,就可以提供给前端让他们参照开发了。

正常情况我们按照上面的步骤就可以出现页面,但是有些时候可能是由于springBoot的版本过高导致的,我们输入之前的地址,出现404的情况,这个主要是由于项目中无法读取到swagger依赖包下的页面导致的。如果出现了这个问题,我们可以添加一个配置类,让他实现WebMvcConfigurer 接口,在添加一个方法

 
  

 

这个时候在启动就可以了!

上面的整个过程已经完成了,但是生成的接口文档的页面,其实很多人不太喜欢,觉得不太符合国人的使用习惯,所有又有一些大神,提供了其他的UI测试页面。这个页面的使用还是比较广泛的。

修改方式:只需引入一个依赖包:

 
  

 然后把刚才实现的那个的那个方法再添加一条:

 
  

 重新启动项目: 访问路径发生了变化: ip:端口号/doc.html

 页面出现了。我们在看看我们的用户接口:

这个风格确实更加的直观,同时也是可以直接进行调试的。大部分的swagger都用的这个风格的文档。

swagger2-demo.zip

上面已经很详细的讲解了swagger2的集成方式,而swagger3的集成方式更加的简洁一些。

 
  

 

 
  

要注意,里边的版本类型换成了 OAS_30, 就是swagger3的意思。 

Tips:OAS 是 OpenAPI Specification 的简称,翻译成中文就是 OpenAPI 说明书。

 同时访问地址:原始地址,也就是没换UI的地址: localhost:8080/swagger-ui/index.html这个要和swagger2区分开。
swagger3的原始UI风格也发生了一些变化:

同时swagger3也是可以更换UI的。方法和swagger2一样。 

swagger3-demo.zip

         如果我们的项目中有关于跨域的处理,同时还有拦截器,然后还要使用swagger,这种情况大家要注意了,有可能我们的拦截器会将swagger中的页面路径拦截掉导致swagger页面出不来,当我们在拦截器中把swagger的页面排除掉的时候,也有可能会导致跨域配置的失效。

 

 
  

 

 
  

用这两种方式去配置,就可以让他们和平共处了。 

到此这篇swagger2的使用(swagger3使用)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • nonetype翻译(nonetype object is not subscriptable翻译)2025-07-13 16:36:05
  • yarn队列配置(yarn配置多队列)2025-07-13 16:36:05
  • dockerd启动(dockerd启动挂载到var)2025-07-13 16:36:05
  • pointrend代码(point code)2025-07-13 16:36:05
  • 启动docker-compose.yml 服务器ip连不上(docker启动portainer)2025-07-13 16:36:05
  • cruise m下载(cruisin下载百度云)2025-07-13 16:36:05
  • gridview布局(grid 布局)2025-07-13 16:36:05
  • Rasied怎么读(radius怎么读)2025-07-13 16:36:05
  • pointnet++网络模型(network模型)2025-07-13 16:36:05
  • chrony 手动同步(chrony不同步)2025-07-13 16:36:05
  • 全屏图片