私はspringfox-swagger2バージョン2.6.1を使用していますが、PUTとPOST操作用にHTTP 200応答メッセージを自動的に挿入しています。 POSTまたはPUTではレスポンスステータス200を使用しませんが、201と204ではレスポンスステータス200を使用しません)。スクリーンショットの下に以下を参照してくださいSpringfox Swagger POSTとPUTに応答ステータス200を追加
私は著者はそれを「修正」するためにあなたのコントローラに@ResponseStatus
注釈を追加することをお勧め類似した質問の回答を見てきましたが、これは使用に関して、春の独自のドキュメントに対して柔軟性に欠けるとなって行く
残りのAPIの場合はResponseEntity
と@ResponseStatus
です。例:
How to change the response status code for successful operation in Swagger?
と
https://github.com/springfox/springfox/issues/908
この200 OKステータスコードを追加していないSpringfox闊歩を強制する他の方法はありますか?
マイドケット構成:
@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)
));
...と実際のAPIエンドポイントの宣言:
@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();
}