2016-11-20 1 views
3

Ich benutze Springfox-Swagger2 Version 2.6.1, und es fügt HTTP 200 Antwort Nachrichten für PUT und POST-Operationen automatisch, trotz meiner Versuche, es zu konfigurieren, dies zu tun (Ich verwende nicht den Antwortstatus 200 für POST oder PUT, sondern 201 bzw. 204); siehe Screenshot unten:Springfox Swagger Hinzufügen Antwortstatus 200 zu POST und PUT

enter image description here

Ich habe Antworten gesehen auf ähnliche Fragen, bei denen die Autoren schlagen vor, das Hinzufügen einer @ResponseStatus Anmerkung zu Ihrem Controller zu „reparieren“, aber dies wird unflexibel und geht gegen Frühling eigene Dokumentation in Bezug auf die Nutzung von ResponseEntity vs @ResponseStatus für Rest APIs. Beispiele:

How to change the response status code for successful operation in Swagger?

und

https://github.com/springfox/springfox/issues/908

Gibt es eine andere Art und Weise Springfox Swagger zu zwingen, nicht diesen Statuscode 200 OK hinzufügen?

Meine Docket Konfiguration:

@Bean 
public Docket api() { 
    return new Docket(DocumentationType.SWAGGER_2) 
      .useDefaultResponseMessages(false) 
      .select(). 
        apis(RequestHandlerSelectors.any()). 
        paths(paths()). 
        build() 
      .pathMapping("/") 
      .apiInfo(apiInfo()) 
      .genericModelSubstitutes(ResponseEntity.class) 
      .alternateTypeRules(newRule(
        typeResolver.resolve(DeferredResult.class, typeResolver.resolve(ResponseEntity.class, WildcardType.class)), 
        typeResolver.resolve(WildcardType.class) 
      )); 

... und die tatsächliche API-Endpunkt-Deklaration:

@RequestMapping(method = RequestMethod.POST, produces = "application/json") 
@ApiOperation(value = "Create a new enrolment", code = 201) 
@ApiResponses(value = { 
     @ApiResponse(code = 201, message = "New enrolment created", 
       responseHeaders = @ResponseHeader(name = "Location", description = "The resulting URI of the newly-created enrolment", response = String.class))}) 
@ResponseStatus(HttpStatus.CREATED) 
public ResponseEntity<Void> saveNewEnrolment(@ApiParam(value = "Enrolment to save", required = true) @RequestBody final Enrolment enrolment) { 
    // implementation code removed; "location" header is created and returned 
    return ResponseEntity.created(location).build(); 
} 

Antwort

0

den

entfernen
produces = "application/json" 

Teil von der @RequestMapping Anmerkung da Ihre Antwort ist vom Typ Void.class

Verwandte Themen