2015-10-30 30 views
6

Yay önyükleme projemde swagger2 kullanıyorum. İyi çalışıyor ama basic-error-controller'u api'den çıkarmam gerekiyor. Şu anda regex kullanarak aşağıdaki kodu kullanıyorum. Çalışıyor ama bunu yapmanın mükemmel bir yolu var.Varsayılan önyükleme denetleyicisinden yararlanarak swagger api

KODU:

@Bean 
public Docket demoApi() { 
    return new Docket(DocumentationType.SWAGGER_2) 
      .select() 
      .apis(RequestHandlerSelectors.any()) 
      .paths(PathSelectors.regex('(?!/error.*).*')) 
      .build() 
} 

cevap

16

google arama yaptıktan sonra ben GitHub'dan bir konuda, [question] How to exclude the basic-error-controller from being added to the swagger description? gelen çözüm var. Predicates.not() kullanılarak yapılabilir.

Kod, Predicates.not() kullanımından sonra aşağıdaki gibi görünür.

@Bean 
public Docket demoApi() { 
    return new Docket(DocumentationType.SWAGGER_2)//<3> 
      .select()//<4> 
      .apis(RequestHandlerSelectors.any())//<5> 
      .paths(Predicates.not(PathSelectors.regex("/error.*")))//<6>, regex must be in double quotes. 
      .build() 
} 
+1

sayesinde havalı tarafından oluşturulmaz! Ve sanırım PathSelectors.regex ("/ error. *") Olmalı – zhuguowei

4

Çok 'kadar gitmiş ama birisi aynı sorun var eğer RestController için seçici sağlayarak yapabileceğini arasında: En kontrolörleri

@RestController not eklenmiş akılda

new Docket(SWAGGER_2) 
       .select() 
       .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) 
       .paths(PathSelectors.any()) 
       .build(); 

tutulması

0

Biçimlendirici dökümantasyon tarafından görüntülenen uç noktaları sınırlamayı bulmanın en iyi yolu bunu yapıyor:

@Bean 
public Docket api() { 
    return new Docket(DocumentationType.SWAGGER_2) 
      .select() 
      .apis(RequestHandlerSelectors.any()) 
      .paths(paths()) 
      .build().apiInfo(metadata()); 
} 

private Predicate<String> paths() { 
    return or(
      regex("/firstContext.*"), 
      regex("/secondContext.*")); 
} 

private ApiInfo metadata() { 
    return new ApiInfoBuilder() 
      .title("SomeTitle") 
      .description("SomeDescription") 
      .build(); 
} 

Yani yolları() yöntemi bağlamlarda ile başlamaz her uç nokta

İlgili konular