→ ssccg: 你貼的這篇就建議404啊 06/22 15:28
推 x51811danny: 找不到資源!=沒資料 06/22 16:01
推 xup6y3ru04: 這篇是說要回傳204 06/22 16:17
推 s06yji3: 用ID Get的時候找不到資源的情況是404吧 06/22 16:25
→ yfr: 大家熱烈討論還蠻棒的,資源不存在跟沒有結果是細微的不同 06/22 16:30
推 smalldra: 原來正解是204 ... 06/22 16:36
→ crazycy: 照這篇就是要404阿... 06/22 17:01
→ crazycy: 資源不存在不就是找不到資料(e.g.資料庫沒這筆資料) 06/22 17:02
→ crazycy: 204是指說找到這筆資料,但是內容是空的 06/22 17:03
推 Romulus: 這篇並不是說要回傳204 06/22 17:03
→ Romulus: 「未包含任何 respose 主體」並不是「未包含任何資料」 06/22 17:03
→ iterator: for example, a search operation yielding no matches 06/22 17:04
→ iterator: might be implemented with this behavior. 06/22 17:04
→ Romulus: 喔沒事 我切到英文版了 當我沒說( 06/22 17:05
→ Romulus: 這篇建議用204 06/22 17:05
→ iterator: 不過我覺得是如果想要回傳是 {} 空陣列, 那就是 200 06/22 17:05
→ iterator: 如果要直接表示沒有要回傳的東西, 就用 204 06/22 17:06
→ Romulus: 我個人不建議204的原因是,要是客戶端一律把回傳值先拿 06/22 17:07
→ Romulus: 去parse成json,那204或200不帶訊息都會出錯 06/22 17:07
推 s06yji3: 客戶一律parse json那是客戶不看使用說明的問題? 06/22 17:11
推 s06yji3: GetById和search應該是不同的操作 06/22 17:12
→ ssccg: search operation和resource是兩回事 06/22 17:15
推 Romulus: 你可以說是客戶的問題 你也可以減少客戶的犯錯空間 06/22 17:17
→ ssccg: 什麼叫做resource,什麼叫operation上面的段落有寫 06/22 17:17
→ ssccg: 有些實作沒辦法對應成資源的,可以把這種「非資源」的作業 06/22 17:21
→ ssccg: 公開成虛擬資源,如/add?operand1=99&operand2=1 06/22 17:21
→ ssccg: 簡單說, /名詞/{id} 這種找不到應該用404 06/22 17:22
→ ssccg: 動詞?參數={value1}&參數={value2} 這種才是找不到時可以用 06/22 17:22
→ ssccg: 204的 06/22 17:23
推 Hsins: 承樓上說的,要根據 RESTful 的設計應該盡量避免 URL 帶有 06/22 17:25
→ Hsins: 動詞的操作。可以在頁面的 route 上出現 login,但呼叫後端 06/22 17:25
→ Hsins: 時,登入的操作是要獲取 resource(以這種情景通常資源會命 06/22 17:25
→ Hsins: 名為 session 06/22 17:25
→ ssccg: 更正一下,應該說作業結果是沒結果時用204,找不到還是404 06/22 17:27
推 s06yji3: 這麼明確的東西我不覺得是減少客戶犯錯空間。 06/22 17:27
推 Jichang: 404 無法表達是網址錯 還是沒資源 06/22 18:17
→ qoo456alex: 用path parameter 的方式就回404,不是的話就用body回 06/22 20:39
→ qoo456alex: 空array 然後200 06/22 20:39
推 DrTech: 不懂的人去看國際標準: RFC2616。4xx開頭是 error 。2xx 06/23 08:30
→ DrTech: 開頭是 Info。 06/23 08:30
→ Hsins: 要看也是看 2014 後更新調整的 RFC7231,這個版本才把 REST 06/23 08:33
→ Hsins: 風格考慮進去,敘述中多了對表現層(representation)的解 06/23 08:34
→ Hsins: 釋 06/23 08:34
推 Romulus: 其實就在這個月出了RFC9110 XD 06/23 09:24
→ Hsins: RFC9110 針對 Status Code 的敘述跟 RFC7231 沒有太多差異 06/23 09:25