亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Boot REST服務異常處理

Spring Boot REST服務異常處理

慕標5832272 2019-10-15 09:28:11
我正在嘗試建立一個大型的REST服務服務器。我們正在使用Spring Boot 1.2.1,Spring 4.1.5和Java8。我們的控制器正在實現@RestController和標準的@RequestMapping注釋。我的問題是Spring Boot為控制器異常設置了默認重定向到/error。從文檔:Spring Boot默認提供一個/ error映射,以一種明智的方式處理所有錯誤,并且在servlet容器中注冊為“全局”錯誤頁面。對使用Node.js編寫REST應用程序已有多年的經驗,對我而言,這絕非明智之舉。服務端點生成的任何異常都應在響應中返回。我不明白為什么您要將重定向發送到最有可能是Angular或JQuery SPA使用者的地方,該使用者只是在尋找答案,不能或不會對重定向采取任何措施。我想做的是設置一個可以接受任何異常的全局錯誤處理程序-有目的地從請求映射方法拋出,或者由Spring自動生成(如果未為請求路徑簽名找到處理程序方法,則為404),然后返回標準格式的錯誤響應(400、500、503、404)到客戶端,而無需任何MVC重定向。具體來說,我們將處理錯誤,使用UUID將其記錄到NoSQL,然后將正確的HTTP錯誤代碼與JSON正文中的日志條目的UUID返回給客戶端。文檔對如何執行此操作一直含糊不清。在我看來,您必須創建自己的ErrorController實現或以某種方式使用ControllerAdvice,但是我所看到的所有示例仍然包括將響應轉發到某種錯誤映射,這沒有幫助。其他示例建議您必須列出要處理的每個Exception類型,而不僅僅是列出“ Throwable”并獲取所有內容。誰能告訴我我錯過了什么,或者在沒有暗示Node.js更容易處理的前提下為我指出正確的方向?
查看完整描述

3 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

我認為ResponseEntityExceptionHandler符合您的要求。HTTP 400的示例代碼片段:


@ControllerAdvice

public class MyExceptionHandler extends ResponseEntityExceptionHandler {


  @ResponseStatus(value = HttpStatus.BAD_REQUEST)

  @ExceptionHandler({HttpMessageNotReadableException.class, MethodArgumentNotValidException.class,

      HttpRequestMethodNotSupportedException.class})

  public ResponseEntity<Object> badRequest(HttpServletRequest req, Exception exception) {

    // ...

  }

}


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 1179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號