差異處
這裏顯示兩個版本的差異處。
Both sides previous revision 前次修改 下次修改 | 前次修改 | ||
java:web:restapi:response_code [2019/01/22 22:38] tony |
java:web:restapi:response_code [2023/06/25 09:48] (目前版本) |
||
---|---|---|---|
行 38: | 行 38: | ||
這是用來通知Client所要存取的資源必須經過認證,通常也可以拿來代表使用者的帳號或密碼有問題。 | 這是用來通知Client所要存取的資源必須經過認證,通常也可以拿來代表使用者的帳號或密碼有問題。 | ||
=== 403 - Forbidden === | === 403 - Forbidden === | ||
- | 這是用來通知Client存取權限不足。通常用於Client認證通過,但沒有權限可以存取某些特定資源所回應的錯誤碼。 | + | 這是用來通知Client存取權限不足。舉例來說: |
+ | * Client雖通過認證,但沒有權限可以存取某些特定資源。 | ||
+ | * Client超過能夠存取次數的限制量。 | ||
=== 404 - Not Found === | === 404 - Not Found === | ||
這是用來通知Client所要存取的資源URI並不存在。 | 這是用來通知Client所要存取的資源URI並不存在。 | ||
行 46: | 行 48: | ||
假如Server資源只接受application/json,但Client透過Accept Header或者是特定Query String指定了其它的media type,Server可以回應此錯誤碼通知Client。 | 假如Server資源只接受application/json,但Client透過Accept Header或者是特定Query String指定了其它的media type,Server可以回應此錯誤碼通知Client。 | ||
=== 409 - Conflict === | === 409 - Conflict === | ||
- | 當Client所做的操作會讓資源狀態發生問題時,Server可以回應409。舉例來說,將某資源名稱修改為已存在之名稱;刪除不含有子資源的資源;操作已被修改的資源等。 | + | 當Client所做的操作會讓資源狀態發生問題時,Server可以回應409。舉例來說: |
+ | * 將某資源名稱修改為已存在之名稱。 | ||
+ | * 刪除不含有子資源的資源。 | ||
+ | * 操作已被修改的資源;在GitHub中,如果要Merge已被其他人修改過的Branch,就會收到409。 | ||
=== 412 Precondition Failed === | === 412 Precondition Failed === | ||
這用來代表Client請求Header中的條件無法滿足。舉例來說,Client想透過PUT修改某樣資源,它在Header中指定了If-Match,當伺服器發現If-Match無法吻合時,就會丟412。這個目前我還沒有實際的應用可以舉例。 | 這用來代表Client請求Header中的條件無法滿足。舉例來說,Client想透過PUT修改某樣資源,它在Header中指定了If-Match,當伺服器發現If-Match無法吻合時,就會丟412。這個目前我還沒有實際的應用可以舉例。 | ||
行 53: | 行 58: | ||
===== 5xx - Server Error ===== | ===== 5xx - Server Error ===== | ||
=== 500 - Internal Server Error === | === 500 - Internal Server Error === | ||
- | 這應該是最不陌生的錯誤代碼了。假如Server發生非預期的錯誤,最簡單就是直接將例外抓起,回應此代碼給Client。 | + | 這應該是最不陌生的錯誤代碼了。假如Server發生非預期的錯誤,最簡單就是直接將例外抓起,回應此代碼給Client。\\ |
- | // | + | |
- | // | + | |
Note .如果例外懶得處理,即使回傳500給Client,也不要丟400讓它們覺得有任何希望.. | Note .如果例外懶得處理,即使回傳500給Client,也不要丟400讓它們覺得有任何希望.. | ||
+ | === 503 - Service Unavailable === | ||
+ | 這代表著伺服器暫時無法提供服務。通常代表伺服器在進行維護或者是因為過載而暫時無法提供服務。 | ||
+ | |||
===== Reference ===== | ===== Reference ===== | ||
* REST API Design Rulebook, 1st Edition, by Mark Masse | * REST API Design Rulebook, 1st Edition, by Mark Masse |