2016-04-12 13 views
8
@RequestMapping(...) 
public Foo getFoo(@HeaderParam("header") final String header) { 
    ... 
} 

Aggiunta di un parametro @HeaderParam metodo come sopra springfox lo preleva e quando guardo la spavalderia-ui ha un campo per l'intestazione. Questo è esattamente quello che voglio. C'è un modo per dire a springfox di includere questo parametro di intestazione su un insieme di metodi senza dover includere i parametri sul metodo stesso? Quello che stiamo realmente succedendo è un filtro servlet che usa l'intestazione e vorremmo che fosse facile impostarlo tramite swagger-ui.Spring + Springfox + Header Parametri

+0

@HeaderParam aggiunge un parametro di tipo corpo in Swagger UI mentre il metodo globalOperationParameters aggiunge un tipo di campo di intestazione raffinato (ma è globale) – Julien

+0

Per un parametro di tipo adeguato intestazione specifico per un metodo (non globale), vedi http://stackoverflow.com/questions/40801442/add-a-header-parameter-in-swagger-ui-documentation-with-springfox/40801443 – Julien

risposta

28

È possibile utilizzare globalOperationParameters nella definizione del docket. Ad es.

new Docket(...) 
      .globalOperationParameters(
     newArrayList(new ParameterBuilder() 
      .name("header") 
      .description("Description of header") 
      .modelRef(new ModelRef("string")) 
      .parameterType("header") 
      .required(true) 
      .build())) 

Vedere #22 nella documentazione per ulteriori informazioni.

+0

Potresti dare un'occhiata a questa domanda - http://stackoverflow.com/questions/42348630/customizing-request-header-description-in-swagger-ui-using-springfox-swagger2 – Gandhi

7

più quello spiegato risposta per stesso: -

@Bean 
    public Docket api() { 
     //Adding Header 
     ParameterBuilder aParameterBuilder = new ParameterBuilder(); 
     aParameterBuilder.name("headerName").modelRef(new ModelRef("string")).parameterType("header").required(true).build(); 
     List<Parameter> aParameters = new ArrayList<Parameter>(); 
     aParameters.add(aParameterBuilder.build()); 
     return new Docket(DocumentationType.SWAGGER_2).select() 
       .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build().apiInfo(apiInfo()).pathMapping("").globalOperationParameters(aParameters); 
    } 
+1

Grazie per la risposta che ha aiutato molto, cambiare l'ultimo ritorno dichiarazione per restituire nuovo Docket (DocumentationType.SWAGGER_2) .select() .apis (RequestHandlerSelectors.any()). paths (PathSelectors.any()). build(). pathMapping (""). globalOperationParameters (aParameters); – Nazeel