Получение пустого пользовательского интерфейса в весеннем приложении MVC - PullRequest
1 голос
/ 24 марта 2019

Я могу получить json-ответ localhost:8080/v2/api-docs, но когда я пытаюсь загрузить swagger-ui на localhost:8080/swagger-ui.html, тогда он показывает swagger-ui, в котором нет ни одного api.

чванство-щ

чванство-1010 * JSON *

1 Ответ

0 голосов
/ 24 марта 2019

Можете ли вы рассмотреть следующие моменты в вашем проекте:

Проверьте, есть ли у вас аннотации Spring и Swagger в вашем классе Controller.

@RestController
@RequestMapping(value = "/order")
@ApiResponses({
        @ApiResponse(code = 400, message = "Bad Request"),
        @ApiResponse(code = 401, message = "Unauthorized"),
        @ApiResponse(code = 403, message = "Forbidden"),
        @ApiResponse(code = 404, message = "Not Found"),
        @ApiResponse(code = 415, message = "Unsupported Media Type"),
        @ApiResponse(code = 422, message = "Unprocessable Entity")
})
public class OrderController {
    // Controller class code.
}

Затем проверьте, есть ли на вашей конечной точке аннотации:

@PostMapping(
        value = "/v1/new",
        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
        produces = MediaType.APPLICATION_JSON_UTF8_VALUE
)
@ApiOperation(
        value = "Create new Order.",
        consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
        produces = MediaType.APPLICATION_JSON_UTF8_VALUE,
)
public ResponseEntity<String> newOrder(
        @RequestHeader(name = "Content-type", defaultValue = "application/json;charset=UTF-8")
        @NonNull final String contentType,
        @RequestBody @NotNull @Valid OrderDTO orderDTO) {
    // Endpoint code.
}

Конфигурация Swagger with SpringBoot:

@EnableSwagger2
public class SwaggerConfig {

    private static final String BASE_PACKAGE = "com.example.api";

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage(BASE_PACKAGE))
            .paths(any())
            .build()
            .consumes(getContentType())
            .produces(getContentType())
            .apiInfo(getApiInfo());
    }

    private Set<String> getContentType() {
        final HashSet<String> mediaType = new HashSet<>();
        mediaType.add(MediaType.APPLICATION_JSON_UTF8_VALUE);
        return mediaType;
    }

    private ApiInfo getApiInfo() {
        return new ApiInfo(
            //...
        );
    }
}

Конфигурация Swagger without SpringBoot:

Добавьте: @Configuration, extends WebMvcConfigurationSupport и переопределите метод addResourceHandlers в вашем классе SwaggerConfig.

@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {

    @Bean
    public Docket api() {
        //...
    }

    private ApiInfo getApiInfo() {
        return new ApiInfo(
            //...
        );
    }

    @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/");
    }
}

Справка: Настройка Swagger 2 с помощью Spring REST API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...