Swagger核心v3在java中的实现
我正在编写一些API,我想在编写代码时集成文档,所以我发现Swagger是一种很好的方法 我使用了Swagger core v3符号,因此我的类类似于:Swagger核心v3在java中的实现,java,swagger,swagger-3.0,Java,Swagger,Swagger 3.0,我正在编写一些API,我想在编写代码时集成文档,所以我发现Swagger是一种很好的方法 我使用了Swagger core v3符号,因此我的类类似于: @RestController @RequestMapping("/api/v1/bundles") @OpenAPIDefinition( info = @Info( title = "Lifecycle Management RESTful API.&quo
@RestController
@RequestMapping("/api/v1/bundles")
@OpenAPIDefinition(
info = @Info(
title = "Lifecycle Management RESTful API.",
version = "1",
description = "TODO",
license = @License(name = "Apache 2.0", url = "xxx"),
contact = @Contact(url = "xxx", name = "xx", email = "xxx@xxx.fr")
))
public class RestBundle {
@GetMapping(value = "/{nodeId}",
produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.OK)
@ResponseBody
@Operation(summary = "Get all bundles",
description = "Get all available bundles status from a specific node")
public Something(..) {
//Something ...
}
}
我创建了一个配置类:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("ANF Orchestrator")
.description("REST API for ANF Orchestrator")
.license("Apache 2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
.termsOfServiceUrl("")
.version("1.0.0")
.contact(new Contact("Amine","xxx", "aalaouie@laas.fr"))
.build();
}
}
我想启用Swagger的UI来获取文档,但当我进入时:
…/swagger-ui.html
我得到:
无法呈现此定义
提供的定义未指定有效的版本字段
请指明有效的Swagger或OpenAPI版本字段。支持的版本字段包括:swagger:“2.0”和那些与openapi:3.0.n匹配的字段(例如,openapi:3.0.0)
尝试使用WebMvcConfigurationSupport扩展您的SwaggerConfig类,并使用如下实现覆盖其名为addResourceHandlers的方法:
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
在类的顶部,您可以尝试删除此注释,因为SwaggerConfig已经包含摘要信息
@OpenAPIDefinition(
info = @Info(
title = "Lifecycle Management RESTful API.",
version = "1",
description = "TODO",
license = @License(name = "Apache 2.0", url = "xxx"),
contact = @Contact(url = "xxx", name = "xx", email = "xxx@xxx.fr")
))
谢谢,这很有效,但我得到一个错误异常:受保护的void addResourceHandlers(ResourceHandlerRegistry){