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

Hinzufügen eines @HeaderParam Methodenparameter wie oben springfox es aufgreift und als ich an der Prahlerei-ui suchen hat es ein Feld für die Kopfzeile. Das ist genau was ich will. Gibt es eine Möglichkeit, Springfox zu sagen, diesen Header-Parameter in eine Reihe von Methoden aufzunehmen, ohne die Parameter in die Methode selbst aufnehmen zu müssen? Was wir wirklich machen, ist ein Servlet-Filter, der den Header verwendet und wir möchten, dass er einfach durch den Swagger-Ui gesetzt wird.Spring + Springfox + Header-Parameter

+0

@HeaderParam einen Körper-Typ Parameter in Swagger UI fügt hinzu, während die globalOperationParameters Methode einen feinen Kopftyp-Feld fügt hinzu (aber ist global) – Julien

+0

Für einen richtigen Header-Typ Parameter spezifisch für eine Methode (nicht global), siehe http://stackoverflow.com/questions/40801442/add-a-header-parameter-in-swagger-ui-documentation-with-springfox/40801443 – Julien

Antwort

28

Sie konnten die globalOperationParameters in der docket Definition verwenden. Für z.B.

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

Siehe #22 in der Dokumentation für weitere Informationen.

+0

Könnten Sie bitte einen Blick darauf werfen bei dieser Frage - http://stackoverflow.com/questions/42348630/customizing-request-header-description-in-swagger-ui-using-springfox-swagger2 – Gandhi

7

Eine weitere erklärt Antwort für gleiche: -

@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

Vielen Dank für die Antwort es sehr geholfen, ändern letzte Rück Anweisung zurück neue Docket (DocumentationType.SWAGGER_2) .select() .apis (RequestHandlerSelectors.any()) Pfade (PathSelectors.any()) aufzubauen() pathMapping ("") globalOperationParameters (aParameters)....; – Nazeel