Реализация ядра Swagger v3 в Java - PullRequest
0 голосов
/ 05 июня 2019

Я пишу некоторый API и хочу интегрировать Документацию во время написания кода, поэтому я нашел Swagger как хороший способ для этого.

Я использовал нотации Swagger core 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.html

Я получаю:

Невозможно сделать это определение В указанном определении не указывается допустимое поле версии.

Укажите действительное поле версии Swagger или OpenAPI. Поля поддерживаемой версии: swagger: "2.0" и поля, соответствующие openapi: 3.0.n (например, openapi: 3.0.0).

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Помимо класса, вы можете попробовать удалить эту аннотацию, поскольку 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")
            ))
0 голосов
/ 05 июня 2019

Попробуйте расширить класс SwaggerConfig с помощью WebMvcConfigurationSupport и переопределить его метод с именем 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/");
}
...