maven:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
新建一个swagger的配置类
@EnableOpenApi
@ApiIgnore
@Controller
public class SwaggerConfig implements WebMvcConfigurer {
private final String baseUrl;
public SwaggerConfig(
@Value("${springfox.documentation.swagger-ui.base-url:}") String baseUrl) {
this.baseUrl = baseUrl;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
String baseUrl = StringUtils.trimTrailingCharacter(this.baseUrl, '/');
registry.
addResourceHandler(baseUrl + "/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
.resourceChain(false);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController(baseUrl + "/swagger-ui/")
.setViewName("forward:" + baseUrl + "/swagger-ui/index.html");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
// registry
// .addMapping("/api/pet")
// .allowedOrigins("http://editor.swagger.io");
// registry
// .addMapping("/v2/api-docs.*")
// .allowedOrigins("http://editor.swagger.io");
}
@GetMapping(value = "/")
@Operation(hidden = true)
public ModelAndView home() {
return new ModelAndView("redirect:/swagger-ui/index.html");
}
}
说明:
swagger3 摒弃了@EnableSwagger2
这个注解,改成了@EnableOpenApi
对应在controller里也有修改
这里我放一个示例
@RestController
@Tag(name = "TAT",description = "就是这么牛逼")
public class TaTController {
@GetMapping("/hello/{id}")
@Operation(summary = "Find by ID",
tags = {"TAT"},
description = "I am testing TAT ,find by Id return TAT")
public Resp findById(@Parameter(name = "id",description = "id斯巴拉西")@PathVariable Integer id,
@Parameter(description = "随便干什么") @RequestParam String sss){
return Resp.ok(TAT.builder().code(20L).name("3").some(Stream.of("2","3").collect(Collectors.toList())).build());
}
@PostMapping("/hello_post/{id}")
@Operation(summary = "Find by ID",
tags = {"TAT"},
responses = { @ApiResponse(description = "xxxx",content = {@Content(examples = {@ExampleObject()},mediaType = "application/json",schema=@Schema(implementation=TAT.class ))}) },
description = "I am testing TAT ,find by Id return Map")
public Resp post(@Parameter(name = "id",description = "id斯巴拉西")@PathVariable Integer id,
@Parameter(description = "随便干什么",required = false) @RequestParam String sss,
@RequestBody TAT tat){
return Resp.ok(TAT.builder().code(20L).name("3").some(Stream.of("2","3").collect(Collectors.toList())).build());
}
}
说明:
@Tag
取代了原来的@Api
@Operation
取代了原来的@ApiOperation
,里面的tags表示此方法可以放到哪个Tag里,如果没有Tag,则默认建一个
@ApiIgnore
表示隐藏API,不会被sawgger展示出来
实体类
@Schema(name="TAT", description="TAT of Schema",title = "TAT_title")
public class TAT {
@Schema(name="name", description="name of Schema",allowableValues = {"wang","li"})
private String name;
private Long code;
@Schema(hidden = true)
private List<String> some;
}
则是使用@Schema
取代了原来的@ApiModel
和@ApiModelProperty