web-dev-qa-db-ja.com

SpringFoxが2.9.2から2.10.4に更新された後は、「基本的なURLを推測できません」というエラーです。

2.9.2から2.10.4のSpring Bootアプリケーション(バージョン2.3.1.release)のSpringFox依存関係を更新しました。

<spring-boot.version>2.3.1.RELEASE</spring-boot.version>
<swagger.version>2.10.4</swagger.version>

springfox.documentation.*パッケージのクラスの変更により、私は自分の設定クラスの注釈を変更しなければなりませんでした

@EnableSwagger2

@EnableSwagger2WebMvc

また、Google GuaveからJava.util.functionに変更されました。現在の設定クラスは、このようになります

package de.rewe.zlip.config;

import Java.util.LinkedList;
import Java.util.List;
import Java.util.Optional;
import Java.util.function.Predicate;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;

@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfig {

    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2).globalOperationParameters(globalOperationParameters())
                                                      .select()
                                                      .apis(sourceScannedForRestApis())
                                                      .paths(PathSelectors.any())
                                                      .build()
                                                      .apiInfo(apiEndPointsInfo())
                                                      .genericModelSubstitutes(Optional.class);
    }

    private List<Parameter> globalOperationParameters() {
        List<Parameter> operationParameters = new LinkedList<>();
        Parameter authorizationParameter = new ParameterBuilder().name("Authorization")
                                                                 .description("Your Bearer token ")
                                                                 .modelRef(new ModelRef("string"))
                                                                 .parameterType("header")
                                                                 .build();
        operationParameters.add(authorizationParameter);
        return operationParameters;
    }

    private Predicate<RequestHandler> sourceScannedForRestApis() {
        return RequestHandlerSelectors.basePackage("de.my.package");
    }

    private ApiInfo apiEndPointsInfo() {
        return new ApiInfoBuilder().title("TEST SERVER REST API")
                                   .description("REST API provided for the TEST web application")
                                   .contact(contactInfo())
                                   .version("v1.0")
                                   .build();
    }

    private Contact contactInfo() {
        return new Contact("Test Team", "https://", "[email protected]");
    }

}

Http:// localhost:8080/swagger-ui.htmlを開くと、次のメッセージが表示されます。

ベースURLを推測できません。動的サーブレット登録を使用するとき、またはAPIがAPIゲートウェイの背後にあるときにこれは一般的です。ベースURLは、すべての短剣リソースが提供される場所の根本です。例えば。 APIが利用可能な場合は, http://example.org/api/v2/api-docs それからベースのURLは http://example.org/api/ 。手動で場所を入力してください。

言うまでもなく、同じ構成(上記の2つの変更を除く)は2.9.2で作業しました。以前の質問でのヒントのほとんどは追加しています

@EnableSwagger2

しかし、この注釈は2.10.xで@EnableSwagger2Mvcまたは@EnableSwagger2Fluxのいずれかに変更されたため、これは役に立ちません。

5
Thorsten Kitz

下記に試すことができます。

  1. Pom.xmlにこの依存関係を追加してください
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-data-rest</artifactId>
  <version>${your.spring.fox.version}</version>
</dependency>
 _
  1. この行をメインクラスまたはSwagger Configクラスのいずれかに追加します。
@Import(SpringDataRestConfiguration.class)
 _
1
deiyanfott