我正在使用Swagger來處理我的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也是可能的。
當然,我可以將@ApiResponse(code = 409, message = "Role already exists")
定義添加到createRole()
方法,但這似乎是雙重信息,因爲我已經暗示拋出異常。
我該如何告訴大家,如果一個ResourceAlreadyExistsException
可以被拋出,409也是一個可能的響應碼?
我已經嘗試在ResourceAlreadyExistsException
上定義@ApiResponse
,但這並不奏效。
杜林的Derb角色實體被標記爲獨特的(角色名)?因爲休眠不知道角色已經存在或沒有給出一個唯一的約束 –