2017-05-12 9 views
0

私はREST APIとspringfox swagger v2.6.1が含まれ、動作しています。しかし、今は、私が持っているすべてのコントローラーを表示したくないのですが、そのうちのいくつかは非常に技術的で平均的なユーザー向けではないので、私はコードを再コンパイルせずに表示するものを選択できます。ページの上に、デフォルト(/ v2/api-docs)(またはそれを設定したもの)というこのドロップダウンフィールドがあり、この1つのエントリだけがあります。私の感想は、そこに複数のオプションを持つことが可能でなければならないということと、オプションに応じて特定のコントローラクラスを表示するかどうかということです。swaggerのAPI部品のフィルタリング

画像をアップロードする方法がわからないため、スクリーンショットを提供できません。とにかく私の質問がはっきりしていることを願っています

私のプロジェクトで威張っを行うコードが最も単純可能です:

@Bean 
public Docket api() { 

    return new Docket(DocumentationType.SWAGGER_2) 
      .select() 
       .apis(RequestHandlerSelectors.any()) 
       .paths(PathSelectors.any()) 
       .build() 
      .apiInfo(metadata()); 
} 

private ApiInfo metadata() { 
    return new ApiInfoBuilder() 
      .title("My awesome ACS API") 
      .description("All the requests that the server will respond to.") 
      .version("1.0.0") 
      .build(); 
} 

「私は、いくつかのプロパティを追加する2 .selectをやって()と異なるものを選択するようないくつかのアプローチを試みたが、私はドン本当に私が達成したいと思っているところに近いところにいるようです。

ありがとうございました!

答えて

1

オプションの一部は、私はあなたがSpringSecurityを使用して別のエンドポイントに認証を追加し、すべてのエンドポイントにアクセスできないことができます

  1. と考えることができます(ただし、SWAGGER UIに表示されます)。

  2. あなたが上に言及されているドロップダウンはあなたが完全にあなたドッカー構成でこのようないろいろ書いて闊歩UIに表示されてからエンドポイントを除外することができ、この

    @Bean 
    public Docket orderApi() { 
        // This will group the endpoints strting with /order. 
        // And it will be visible as a separate group in the drop down(In Swagger UI) 
        // with the name 'order' as specified in the groupName(..) 
        return new Docket(DocumentationType.SWAGGER_2) 
          .groupName("order") 
          .apiInfo(metadata()) 
          .select() 
          .paths(PathSelectors.ant("/order/**")) 
          .build(); 
    } 
    
    @Bean 
    public Docket orderValidationApi() { 
        return new Docket(DocumentationType.SWAGGER_2) 
          .groupName("product") 
          .apiInfo(metadata()) 
          .select() 
          .paths(PathSelectors.ant("/product/**")) 
          .build(); 
    } 
    
  3. のようなものに構成することができ

    return new Docket(DocumentationType.SWAGGER_2) 
         .select() 
          .apis(RequestHandlerSelectors.any()) 
          .paths(PathSelectors.regex("(?!/error).+")).paths(PathSelectors.regex("(?!/product).+")) 
          .build() 
         .apiInfo(metadata()); 
    

    これにより、/ errorおよび/ product以外のすべてのエンドポイントが使用可能になります。このようなエンドポイントを除外することができます。

+0

ありがとうございます! 2番目の答えは正確に私が探していたものでした。.groupName( "")がキーでした(私はアクセシビリティで何も変更したくないので、単に表示するためでした)。さて、私の場合、ドロップダウンのタイトルはあまり良くありません: アドバンスド(/ acs/docs?group = Advanced)私は何かにそれを変更することができる任意の方法litteユーザーフレンドリー?それ以外の場合は、私もそれと一緒に暮らすことができます..ありがとう! – totee

+0

解説をコメントで更新しました。 – pvpkiran

+0

あなたのために働く場合は答えを受け入れますか – pvpkiran

関連する問題