iT邦幫忙

0

[Java的20堂課]L5-後端框架+例外處理

  • 分享至 

  • xImage
  •  

家教20250116

上次先建立了一個簡單的api,稍微體驗一下是怎麼運作的,這次來加強一下,讓它更嚴謹一些吧


上次的api在接通後,以回傳json的格式去知道這個api的狀況,但通常來說,要讓前端工程師知道這個api的連線狀況或是回傳的資料有沒有問題,不會使用json這樣的方法,而是會另外統一一個格式讓前端工程師能夠比較清楚。

建立apiResponse

Java的命名方式以駝峰式命名
檔案的命名方式,第一個單字的第一個字會是大寫,第二個單字的第一個字小寫
變數命名的方式就和檔案的命名的方式反過來,先小寫在大寫

在dataObject資料夾中建立 ApiResponse.java檔案
在ApiResponse檔案中通常會有下面幾個屬性
status //用來表示api的狀態碼: 200、400、500、404
message //除了看status之外,也可以透過message的描述來知道問題是甚麼
T data //不定義任何類別的資料,不定義的原因是因為回傳的資料不一定視同一種格式,如過在這邊定義data的格式,若是發生回傳格式不一致的話又要反反覆覆修改會很麻煩也會占用電腦資源,所以就使用泛型的方法讓使用到的類別去定義自己要回傳的格式就好

(ApiResponse設定好的樣子)
https://ithelp.ithome.com.tw/upload/images/20250323/201346172H73PGhM81.png

回到controller修改一下

將原本回傳Materail類別的方法改為回傳ApiResponse類別並且指定回傳類別為Materail
https://ithelp.ithome.com.tw/upload/images/20250323/20134617qnj1a5UBBk.png

!注意原本在ApiResponse設定status是String的型態,這邊要改成HttpStatusCode的型態
(ApiResponse修改後)
https://ithelp.ithome.com.tw/upload/images/20250323/20134617g804L5QXIP.png
(controller修改後)
https://ithelp.ithome.com.tw/upload/images/20250323/20134617HQ5Gpgp251.png

例外處理 try-catch

在response.setStasus(HttpStatusCode.valueOf(200))中定義Status:200的原因,200表示成功,如果程式邏輯沒有問題,基本上這樣寫不會出問題,但也有可能出問題的不是程式本身,而是使用者傳入錯誤的資料,導致出現問題,這時候如果定義status是200的情況下會不太好找出錯誤在哪裡,因此這便可以改成try-catch的方式
https://ithelp.ithome.com.tw/upload/images/20250323/20134617evs72WdqqL.png

使用Postman測試

http method:post (成功)

https://ithelp.ithome.com.tw/upload/images/20250323/20134617Zp73TnxCh9.png

http method:post (不成功,要抓例外)

https://ithelp.ithome.com.tw/upload/images/20250323/20134617Tr6iVbO9t9.png

http method:get (成功)

https://ithelp.ithome.com.tw/upload/images/20250323/20134617pF2PBjkSgh.png

http method:delete (成功)

https://ithelp.ithome.com.tw/upload/images/20250323/20134617f78w5tC6P4.png

更新資料

前面將新增、查詢、刪除都改好了,還少了一個修改(更新)資料,現在來試試看吧
!注意if盡量不寫else,因為邏輯上來說比較不直觀
https://ithelp.ithome.com.tw/upload/images/20250323/20134617yVpdDwfVDw.png

https://ithelp.ithome.com.tw/upload/images/20250323/2013461773mzGNbAEp.png


.

尚未有邦友留言

立即登入留言