APIドキュメントのベースアクセスURLを変更しようとしています。 URLは " http:// localhost:8080/swagger-ui.html "です。 「 http:// localhost:8080/myapi/swagger-ui.html "のようなものを取得したいのですが。
私はSpringfox 2.8.0 Swaggerを使用しています、Java 8、Spring Boot 2.0 Swagger構成は次のとおりです。
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket api(ServletContext servletContext) {
return new Docket(DocumentationType.SWAGGER_2)
.pathProvider(new RelativePathProvider(servletContext) {
@Override
public String getApplicationBasePath() {
return "/myapi";
}
})
.select()
.apis(RequestHandlerSelectors.any())
.paths(Predicates.not(PathSelectors.regex("/error")))
.build()
.useDefaultResponseMessages(false);
}
}
カスタムパスプロバイダーの助けが必要でしたが、URL " http:// localhost:8080/swagger-ui.html "を使用してAPIドキュメントにアクセスできます。 URL " http:// localhost:8080/myapi/swagger-ui.html "を使用すると、404エラー。下のスクリーンショットを見てください。
https://github.com/springfox/springfox/issues/225 -自分のパスへのリダイレクトを設定できると彼らが言ったように
SwaggerベースアクセスURLはベースアプリケーションパスから構築されます。したがって、ベースアプリケーションパスを変更すると、望ましい動作が得られますが、すべてのAPIもそのパスに変更されます。あなたはそれをここで変更する方法を見つけることができます 春のブートで残りのベースURLを設定する方法? 。
あなたがやったことは、ベースURLを変更するのではなく、アプリケーションから他のAPIをswaggerが呼び出す方法を変更することです。アプリケーションのベースパスを変更せずに(すべてのSwaggerリソースを手動で移動して)SwaggerベースのURLを変更するいくつかのトリックがありますが、私はそれをお勧めしません。
package
(RESTコントローラ)を含むものである必要があります)、Host
、およびPATH
を置き換えるように注意してください必要
@Configuration
@EnableSwagger2
public class SwaggerConfiguration implements WebMvcConfigurer {
public static final String PATH = "/myapi";
@Bean
public Docket api() {
final var package = "com.Julia.rest";
final var Host = "localhost:8080";
return new Docket(DocumentationType.SWAGGER_2)
.Host(host)
.select()
.apis(RequestHandlerSelectors.basePackage(package))
.paths(PathSelectors.any())
.build();
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
final var apiDocs = "/v2/api-docs";
final var configUi = "/swagger-resources/configuration/ui";
final var configSecurity = "/swagger-resources/configuration/security";
final var resources = "/swagger-resources";
registry.addRedirectViewController(PATH + apiDocs, apiDocs).setKeepQueryParams(true);
registry.addRedirectViewController(PATH + resources, resources);
registry.addRedirectViewController(PATH + configUi, configUi);
registry.addRedirectViewController(PATH + configSecurity, configSecurity);
registry.addRedirectViewController(PATH, "/");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(PATH + "/**").addResourceLocations("classpath:/META-INF/resources/");
}
}
注ぎ口を編集application.properties
ファイル:
server.servlet.context-path=/myapi
または、application.yml
ファイル:
server:
servlet:
context-path: /myapi
警告:Swaggerだけでなく、すべてのWebサービスの基本パスが変更されます