Добавление базового пути к документам о чванстве - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь изменить базовый путь чванства. В настоящее время у меня есть

@RequestMapping(path = "/api/resourceName/v1")

и конфиг swagger

 return new Docket(DocumentationType.SWAGGER_2).
                select()
                .apis(RequestHandlerSelectors.basePackage("com.company"))
                .paths(PathSelectors.ant("/api/**"))
                .build()
                .apiInfo(apiInfo());

Это дает базовый путь сваггера как "basePath": "/"

Я хочу добавить базовый путь как "basePath": "/api" поэтому я следовал разным потокам, подобным этому Как изменить basePath для Springfox Swagger 2.0 и добавил

return new Docket(DocumentationType.SWAGGER_2).
                select()
                .apis(RequestHandlerSelectors.basePackage("com.ford.vadr"))
                .paths(PathSelectors.ant("/api/vehicleSoftware/**"))
                .build()
                .apiInfo(apiInfo())
                .pathProvider(new RelativePathProvider(servletContext) {
                    @Override
                    public String getApplicationBasePath() {
                        return "/api";
                 }
            });

, теперь базовый путь изменен на "basePath": "/api", и я обновил свое отображение пути на @RequestMapping(path = "/resourceName/v1") как база была добавлена.

Когда я отправляю запрос от swagger, запрос отправляется на /api/resourceName/v1, но служба возвращает 404.

Когда я отправляю запрос через почтальона на /resourceName.v1, тогда он работает.

Таким образом, API регистрируется как /resourceName/v1, и база просто добавляется swagger поверх него, и не будет работать, если запрос отправлен через пользовательский интерфейс

Затем я добавил server.servlet-path=/api на application.properties для регистрации basepath в отображении запроса, и теперь swagger отображает базовый путь как /api без необходимости дополнительной настройки.

Но проблема в том, что теперь документация по swagger доступна на http://localhost:8080/api/swagger-ui.html вместо http://localhost:8080/swagger-ui.html. Поскольку у нас есть все наши другие сервисы, выполните c в http://host/swagger-ui.html, это бесполезно.

Есть ли способ добавить базу и по-прежнему получить доступ к do c в http://host/swagger-ui.html и api работает как ожидается от чванства и почтальона

1 Ответ

0 голосов
/ 13 марта 2020

Да, вы можете добавить базовый путь для всех запросов на сваггер. Для этой цели я использовал следующий конфиг:

@Configuration
@EnableSwagger2
public class SpringFoxConfig {
    @Bean
    public Docket api() {
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();

        docket.pathMapping("api");

        return docket;
    }
}

Надеюсь, это поможет.

...