2017-01-31 11 views
2

API UIにSwagger 2を使用しています。だから、私のgradle.buildがありますSwagger2でSpring MVCエンドポイントを表示/非表示にする

compile "io.springfox:springfox-swagger2:${swaggerVersion}" 
compile "io.springfox:springfox-swagger-ui:${swaggerVersion}" 

私は以下のように闊歩を設定した:私は、私が定義されているAPIエンドポイントを取得するだけでなく、以下のようにSpring MVCのエンドポイントを取得しています

@Configuration 
@Profile("!production") 
@EnableSwagger2 
@ComponentScan(basePackageClasses = com.company.controllers.ContentController.class) 
public class SwaggerConfiguration { 
    @Autowired 
    private BuildInfo buildInfo; 

    @Bean 
    public Docket awesomeApi() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .apiInfo(this.awesomeApiInfo()) 
       .select() 
       .apis(Predicates.not(RequestHandlerSelectors.basePackage("org.springframework.boot"))) 
       .build(); 

    } 

    private ApiInfo awesomeApiInfo() { 
     return new ApiInfoBuilder() 
       .title("Awesome API - build #" + this.buildInfo.getVersion()) 
       .description("Enter the IDs in order to look for the content") 
       .version("0.1") 
       .build(); 
    } 
} 

enter image description here

は今、私はこれらのMVCのエンドポイントを取り除く必要があります。

ご協力いただきまして誠にありがとうございます。

答えて

1

ベストプラクティスは、可視性とServiceStackへのアクセスを制限することです。だから、あなたが外部から見えることから、それを隠すことができます。

[Restrict(VisibleInternalOnly = true)] 
public class InternalAdmin { } 

あなたが実際にそれが私の愚かな間違いだった...あーそれについてhere

+0

spring mvcエンドポイントの表示を制限するにはどうすればよいですか?私は質問にスクリーンショットを添付しました。 –

+0

あなたがプライベートに設定できるyamlファイルを持っているなら、制限するエンドポイントについては真です。 –

3

をより多くを読むことができます。

@Bean 
    public Docket awesomeApi() { 
     return new Docket(DocumentationType.SWAGGER_2) 
       .apiInfo(this.awesomeApiInfo()) 
       .select() 
       .paths(PathSelectors.any()) 
       .apis(RequestHandlerSelectors.basePackage("com.company.awesome.controllers")) 
       .build(); 

    } 

そして、これはcontrollerパッケージ内のクラスの中にマッピングされたエンドポイントのみを示しています。私は次のように自分のコントローラパッケージからエンドポイントのみを選択するようにRequestHandlerSelectorsを変更しました。

関連する問題