飞道的博客

Swagger详解

324人阅读  评论(0)

在前后端分离开发的过程中,前端和后端需要进行api对接进行交互,就需要一个api规范文档,方便前后端的交互,但api文档不能根据代码的变化发生实时动态的改变,这样后端修改了接口,前端不能及时获取最新的接口,导致调用出错,需要手动维护api文档,加大了开发的工作量和困难,而swagger的出现就是为了解决这一系列的问题。Swagger是一系列用于RESTful API开发的工具。

导入依赖


   
  1. <dependency>
  2. <groupId>io.springfox</groupId>
  3. <artifactId>springfox-swagger2</artifactId>
  4. <version> 2.9 .1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>io.springfox</groupId>
  8. <artifactId>springfox-swagger-ui</artifactId>
  9. <version> 2.9 .1</version>
  10. </dependency>

配置Swagger


   
  1. @Configuration
  2. @EnableSwagger2
  3. public class SwaggerConfig {
  4. @Bean
  5. public Docket docket (){
  6. return new Docket(DocumentationType.SWAGGER_2)
  7. .apiInfo(apiInfo())
  8. //分组的名字
  9. .groupName( "yu")
  10. //设置为哪些目标接口生成接口文档
  11. .select()
  12. .apis(RequestHandlerSelectors.basePackage( "com.example.demo.controller"))
  13. //任意路径
  14. .paths(PathSelectors.any())
  15. .build();
  16. }
  17. private ApiInfo apiInfo (){
  18. //作者信息
  19. Contact contact = new Contact( "yu", "https://blog.csdn.net/qq_43649937?type=blog", "2248406167@qq.com");
  20. return new ApiInfo(
  21. "yu的swaggerAPI文档",
  22. "11",
  23. "v1.0",
  24. "https://blog.csdn.net/qq_43649937?type=blog",
  25. contact,
  26. "Apache2.0",
  27. "http://www.apache.org/licenses/LICENSE-2.0",
  28. new ArrayList()
  29. );
  30. }
  31. }

然后访问http://localhost:8080/swagger-ui.html就可以访问 swagger界面了,在这里我在运行 时出现了以下这样的问题,org.springframework.context.ApplicationContextException: Failed to start bean

在经过查资料得以解决这个问题:Springfox使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher,因此需要在application.properties里配置spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER ,最终问题得以解决。

然后就是如果配置了拦截器记住一定要放行swagger,不然无法访问,在拦截器配置中放行路径如下

.excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");

Swagger常用注解

@Api()用于类;

表示标识这个类是swagger的资源 ,@Api 注解用于标注一个Controller(Class)

@ApiOperation()用于方法;

表示一个http请求的操作

@ApiParam()用于方法,参数,字段说明;

表示对参数的添加元数据(说明或是否必填等)

@ApiModel()用于类

表示对类进行说明,用于参数用实体类接收

@ApiModelProperty()用于方法,字段

表示对model属性的说明或者数据操作更改

@ApiIgnore()用于类,方法,方法参数

表示这个方法或者类被忽略

@ApiImplicitParam() 用于方法

表示单独的请求参数

@ApiImplicitParams() 用于方法,包含多个 @ApiImplicitParam


转载:https://blog.csdn.net/qq_43649937/article/details/128651804
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场