前言
Swagger是一个可以根据你的代码,自动生成接口文档的一个工具,并且可以用作接口测试工具,2022年了,Swagger也要用3.0版本了吧
如果你使用的是 Springboot 2.6 版本,需要配置,否则报下面的错,现在 Springboot 3.0 和 Springboot 2.5.8 不需要配置下面这
Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null
一、引入依赖
没错,Swagger 3.0版本只需要引入这一个依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
二、配置
在项目中新建 Swagger3Config
package pers.xuyijie.communityinteractionsystem.config;
import io.swagger.annotations.ApiOperation;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@SpringBootConfiguration
@EnableOpenApi
public class Swagger3Config {
Boolean swaggerEnabled=true;
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.OAS_30)
.apiInfo(apiInfo())
.enable(swaggerEnabled)
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("Swagger3接口文档")
.description("社区交互软件接口文档")
.contact(new Contact("徐一杰","https://xuyijie.icu/", "1119461672@qq.com"))
.version("1.0")
.build();
}
}
三、配置 application.yml
如果你使用的是 Springboot 2.6 版本,需要配置,否则报下面的错,现在 Springboot 3.0 和 Springboot 2.5.8 不需要配置下面这个,你们看情况怎么办
Caused by: java.lang.NullPointerException: Cannot invoke "org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns()" because "this.condition" is null
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
四、使用方法
在 controller 上面增加 @Api(tags = "发贴版块的社区交流和匿名举报") 注解,tags里面是你对这个 controller 的描述
在 controller 里面的方法上增加@ApiOperation(value = "发布帖子") 注解,value是你对这个方法的描述
@Api(tags = "发贴版块的社区交流和匿名举报")
@RestController
@RequestMapping("/blog")
public class BlogController {
private final BlogService blogService;
public BlogController(BlogService blogService) {
this.blogService = blogService;
}
@PostMapping("/posted")
@ApiOperation(value = "发布帖子")
public ResultCode<Blog> posted(@RequestBody Blog blog, HttpServletRequest request) throws FileNotFoundException {
return blogService.posted(blog,request);
}
}
实体类也可以增加注解,也可以不加,主要是 controller 加就行
实体类上面增加@ApiModel(value = "Blog", description = "社区交流、匿名举报帖子实体类") ,下面的字段增加@ApiModelProperty(value = "主键") ,value 是 Swagger 生成的文档中显示的名字,description 是你对实体类的描述
@Data
@TableName("blog")
@ApiModel(value = "Blog", description = "社区交流、匿名举报帖子实体类")
public class Blog implements Serializable {
@ApiModelProperty(value = "主键")
private String id;
@ApiModelProperty(value = "所属社区")
private String belongCommunity;
}
总结
启动项目,访问http://localhost:8081/swagger-ui/ ,注意 Swagger3 和 2 访问的页面有细微差别
|