2017-11-22 25 views
2

なぜspringfox-swagger2のUIは私に教えてくれるUnable to infer base url.私が知る限り、私は典型的なSwaggerスプリングブート構成を使用しています。springfox-swagger2のUIで「ベースURLを推測できません」と表示されるのはなぜですか?

スクリーンショットからわかるように、UIをバックアップするswagger-foxのURLはexample.com/apiです。注:https://localhost:9600/api/v2/api-docs/に移動すると標準のSpring Whitelabel Error Pageが表示されます。私はこれが問題の根源だと思う?私は春がspringfox-swagger2をロードしなかったというエラーはないので、なぜそれが動作していないのかわかりません。

enter image description here

私の設定は次のようになります(と私は助言のためのネットを検索するから、この設定のバリエーションのすべての種類を試してみました):

@EnableSwagger2 
@EnableWebMvc 
@ComponentScan(basePackages = {"com.company.project"}) 
public class SwaggerConfig 
{ 
    @Bean 
    public Docket api() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .select() 
       .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot"))) 
       .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.cloud"))) 
       .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.data.rest.webmvc"))) 
       .paths(PathSelectors.any()) 
       .build(); 
    } 
} 

そして

<!-- to generate /swagger-ui.html --> 
<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger2</artifactId> 
    <version>2.7.0</version> 
</dependency> 

<dependency> 
    <groupId>io.springfox</groupId> 
    <artifactId>springfox-swagger-ui</artifactId> 
    <version>2.7.0</version> 
</dependency> 

注:興味深いことに、バージョン2.6.0を試してもモーダルポップアップは表示されませんが、Swagger UIは0個のAPIコンテンツを表示します。だから、私はモーダルがかなり新しくなければならないことを知っていますか?

ここに十分な情報がない場合は、私にコメントを残してください。

+0

'springfox.documentation.swagger2.web.Sw​​agger2Controller#getDocumentation'にブレークポイントを設定してdebugを実行すると、' https:// localhost:9600/api/v2/api- docs/' –

+0

ありがとう、ありがとう。します。これを行うには数日をください。 – djangofan

答えて

0

それは私の問題を解決するには、メインに@EnableSwagger2注釈を移動するためだったことが判明Docket Beanと一緒に設定クラス。

Docket Beanを使ってサブパッケージに別のクラスを作成しましたが、SpringでスキャンしてBeanをロードすることを期待していました。おそらく私は@Componentでその教室のクラスに注釈を付けることができなかったかもしれません。あるいは、問題が別のものだったかもしれませんが、私はそれを働かせました。

1

メインクラスをで拡張します。SpringBootServletInitalizer。 うまくいくでしょう。 次のように参照してください。

public class TestApp extends SpringBootServletInitializer{ 

    public static void main(String[] args) { 

     SpringApplication.run(TestApp.class, args); 
    } 
} 
+2

...注釈付きのスプリングブートアプリケーションをマークする:@ EnableSwagger2 – Mark

1

私はアノテーションでSpringBootApplicationを追加することによって、問題を解決することができました - マークによって示唆されているように:

@EnableSwagger2 
関連する問題