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
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();
}