2.7.0(実装最初の):私は、この日にspringfox-swagger2を使用して文書化されたスプリング・ブーツで作られたRESTサービスで働いています。最後の操作は、私はこのようなルックスを追加しました:
@ApiOperation(value = "whatever")
@ApiResponses({
@ApiResponse(code = HttpURLConnection.HTTP_NO_CONTENT, message = "Returns empty content when succeeds"),
@ApiResponse(code = HttpURLConnection.HTTP_FORBIDDEN, message = "You can't do that.")
})
@CrossOrigin
@PreAuthorize("hasAuthority('USER_ACCESS')")
@RequestMapping(value = "/foo", method = POST, consumes = APPLICATION_JSON_VALUE)
@ResponseStatus(HttpStatus.NO_CONTENT)
public ResponseEntity postFoo(
@RequestBody
FooRequestBody requestBody) {
if (someMethodReturnsTrue()) {
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
} else {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
}
さて、問題は関係なく、生成闊歩定義はこのように見える終わるものを、ということです。
"responses": {
"204": {
"description": "Returns empty content when succeeds",
"schema": {
"$ref": "#/definitions/ResponseEntity"
}
},
"403": {
"description": "You can't do that."
}
}
この操作が何も返さないと仮定すると、私は「204」応答は全く持っていない必要があることを理解してschema
(他のもののような)フィールドを。
私は指定試したresponse = Void.class
中で@ApiParam
喜びと注釈(他のスレッドで提案されているように)(これはデフォルト値であるので、それを指定しないと区別がつきません)。
私はまた、設定しようとしたgenericModelSubstitutes(ResponseEntity.class)
私の中にDocket
豆、それは何もしませんでした。
私の代わりに返すのことを知っているResponseEntity
私は返すことができvoid
、ケースの中に投げると例外someMethodReturnsTrue()
確かに戻りますfalse
。@ExceptionHandler
次いで、この方法は、403のステータスコードにその例外を回すことができます。
私は、これはやり過ぎだと思う、私は私が私のドキュメントを修正するために私の実装を変更すべきではないと思います。私が尋ねる理由は、その特定のメソッドの戻り値を無視して、それが返されたかのようにそれを治療するためのSpringfoxを伝えるためにどのような方法があり、うvoid
?
ありがとうございました。
追加:
@ApiResponse(code = 204, response = void.class, message = "No Content")
あなたへの@ApiResponses({ ... })
注釈。重要ですvoid.class
代わりに使用されていますVoid.class
。だから、デフォルト値と異なっているとあなたはまだ使用できるResponseEntity
戻り値の型として。