【swagger3.0】swagger3.0配置與使用


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM