2017-10-05 16 views
1

私はRESTのドキュメントをすごく使っています。私はそれを設定してSwaggerUiにアクセスし、設定されたすべてのRESTリソースをサポートされている方法で表示します。Swagger - 宣言された例外の応答ステータスをレンダリングします。

私のバックエンドには、すべてのコントローラに対してグローバル例外処理を行うControllerAdviceがあります。すでに存在するリソースを明らかに作成しようとすると、コントローラのアドバイスで処理される例外の例はResourceAlreadyExistsExceptionです。その場合、私の例外ハンドラは409 CONFLICTステータスコードで応答します。この前提条件で

@ExceptionHandler(value = ResourceAlreadyExistsException.class) 
@ResponseStatus(HttpStatus.CONFLICT) 
protected ErrorResponse handleResourceAlreadyExists(ResourceAlreadyExistsException ex, WebRequest request) { 
    return new ErrorResponse(ex.getMessage()); 
} 

、私のRESTコントローラにマッピングされているメソッドを作成し、次のようになります。デフォルトの設定では

@RequestMapping(method = POST) 
@ResponseStatus(HttpStatus.CREATED) 
public RoleDto createRole(@RequestBody RoleDto roleDto) throws ResourceAlreadyExistsException { 
    return roleManager.createRole(roleDto); 
} 

、闊歩は私だけの可能なレスポンスコードとして201を示しています。 409も可能ですが。

もちろん、の定義をcreateRole()メソッドに追加することもできますが、これは例外をスローすることによって既に暗示しているので、これは二重の情報です。

ResourceAlreadyExistsExceptionをスローすることができる場合、409も可能な応答コードですか?

@ApiResponseを定義しようとしましたが、それが機能しませんでした。

+0

Herr Derbロールエンティティは一意(roleName)としてマークされていますか?休止状態は分かりません。ロールはすでに存在しているかどうかは一意の制約を与えずに –

答えて

1

これはSpringFoxにはまだ存在しませんが、かなり長時間にわたって実装する人を探しています。

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

+0

ヒントをお寄せいただきありがとうございます。たぶん私はしばらく時間を見つけてそれを試してみるでしょう。これは人生をはるかに簡単にするでしょう。 –

関連する問題