标题springboo3.x集成springdoc

pom文件

修改pom文件,引入相应jar文件.

<dependency>
			<groupId>org.springdoc</groupId>
			<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
			<version>2.0.2</version>
		</dependency>

openapi的配置文件

@Configuration
public class OpenapiConfiguration {

    @Bean
    public OpenAPI restfulOpenAPI() {
        Info info = new Info().title("Spring boot demo api project")
                .description("openapi-demo")
                .version("1.0.0")
                .license(new License().name("Apache 2.0").url("http://springdoc.org"));
        return new OpenAPI()
                .info(info)
                .externalDocs(new ExternalDocumentation()
                        .description("SpringDoc Wiki Documentation")
                        .url("https://springdoc.org/v3"));
    }
}

Web 控制器编写

@Tag(name = "演示组")
@RestController
@RequestMapping("/demo")
public class SwaggerDemoController {

    @Operation(method = "POST", summary = "RequestParam参数请求方式")
    @PostMapping(value = "/post-query", produces = {"application/json"})
    public ListResponse<City> getSchool(@Parameter(name = "schoolId", description = "学校ID", required = true, example = "88")
                                                          @RequestParam Integer schoolId,
                                                          @Parameter(name = "schoolName", description = "学校名称", required = false, example = "xx中心")
                                                          @RequestParam String schoolName) {
        return new ListResponse<City>(Collections.emptyList());
    }

访问项目的swagger-ui的地址, 比如 http://localhost:9090/swagger-ui/index.html

兼容 Swagger 2.0

springdoc使用OpenAPI 3.0 规范来生成 API 文档的方式。虽然它不是直接兼容 Swagger 2.0,但是可以通过配置将 OpenAPI 3.0 规范转换为 Swagger 2.0 规范。 在项目的配置文件中增加如下配置即可.

springdoc:
  api-docs:
    enabled: true
    path: /v2/api-docs

springfox迁移到springdoc

springdoc中的产生文档注解使用时跟springfox不一致,对照关系如下

@Api → @Tag
@ApiIgnore → @Parameter(hidden = true) or @Operation(hidden = true) or @Hidden
@ApiImplicitParam → @Parameter
@ApiImplicitParams → @Parameters
@ApiModel → @Schema
@ApiModelProperty(hidden = true) → @Schema(accessMode = READ_ONLY)
@ApiModelProperty → @Schema
@ApiOperation(value = "foo", notes = "bar") → @Operation(summary = "foo", description = "bar")
@ApiParam → @Parameter
@ApiResponse(code = 404, message = "foo") → @ApiResponse(responseCode = "404", description = "foo")
经验分享 程序员 微信小程序 职场和发展