java中Swagger core v3的实现

我正在编写一些 API,并且我想在编写代码时集成文档,因此我发现 Swagger 是实现此目的的好方法。


我使用了 Swagger 核心 v3 符号,所以我的课程类似于:


@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)。


摇曳的蔷薇
浏览 422回答 2
2回答

慕尼黑的夜晚无繁华

尝试使用 WebMvcConfigurationSupport 扩展您的SwaggerConfig类,并使用如下实现覆盖其名为addResourceHandlers的方法:@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {    registry.addResourceHandler("swagger-ui.html")            .addResourceLocations("classpath:/META-INF/resources/");    registry.addResourceHandler("/webjars/**")            .addResourceLocations("classpath:/META-INF/resources/webjars/");}

翻阅古今

在课堂之上,您能否尝试删除此注释,因为 SwaggerConfig 已经包含 Docket 信息。  @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")            ))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java