Re: [討論] API沒資料,回200還是404比較好

作者: Hsins (翔)   2022-06-25 23:48:07
這篇就不以引述的方式回覆了,因為算是對
後續其他人不論在推文中或是回文中的內容
回覆,另外也是針對我自己在前一篇文章中
沒有提到的部分進行說明。
(1) 敘述問題與回答問題
我不知道這裡有多少人上過 jserv的課,如
果有的話,他會頻頻強調不要「舉燭」。從
推文和回文中可以看到,其實不論是發文者
還是回答者,似乎並沒有很正視這個問題…

回到最一開始的問題:
「API 沒資料要回傳 200 還是 404?」
‧什麼樣的 API 呢?
‧什麼樣的場景下設計的呢?
‧什麼樣的狀況叫做沒資料?
‧有沒有基於什麼規範或風格?
‧調用的人是誰?
‧你怎麼想的呢?
如果沒有敘述清楚,要人怎麼回答呢?我想
分享一下兩段文字:
https://i.imgur.com/JWMQJjn.png
[來源] http://hhp.li/4aq287
https://i.imgur.com/KPxidqA.png
[來源] http://hhp.li/43pp7h
你真的想要得到的答案是這樣的嗎?
「公司前輩這樣做就這樣做啦!」
「為了方便,問就是 404 一把梭!」
這樣可以得到什麼成長嗎?你認為去有規模
的公司面試問到這樣的問題時,用這樣的回
答可以拿到 Strong Hire?老實說,這樣的
提問方式和不明就理的回答方式,只會讓社
群的風氣變得越來越糟。
(2) 不是只有 REST 一種設計風格
雖然在前一篇文章中以及推文中,我主要都
以 REST 風格的敘述為主,但那個前提是我
認為那樣的問題敘述下,原 po 的問題是在
下述兩種不同情境下,採用 REST 風格而有
所誤解:
作者: sssyoyo (柚子)   2022-06-25 23:53:00
優文推,學到不少,謝謝
作者: lasekoutkast (白ㄘ)   2022-06-26 00:13:00
作者: WulinWorks (武林)   2022-06-26 00:51:00
作者: jackblack   2022-06-26 00:53:00
作者: bill0205 (善良的小孩沒人愛)   2022-06-26 01:33:00
作者: ss8651twtw (linsc04)   2022-06-26 01:47:00
作者: devilkool (對貓毛過敏的貓控)   2022-06-26 01:56:00
感謝優文
作者: LeoSW (月夜飄雪)   2022-06-26 06:52:00
推問問題的方式
作者: bjk (Up2u)   2022-06-26 06:57:00
11
作者: nh60211as   2022-06-26 08:54:00
優文
作者: yehzu (小葉~)   2022-06-26 09:46:00
真是優文…大推
作者: TAKADO (朕沒給的你不能搶)   2022-06-26 09:57:00
推, It depends <- 這一句很有用
作者: windclara (null)   2022-06-26 10:00:00
推推!
作者: wahaha279 (哇哈哈:3)   2022-06-26 10:16:00
作者: toxic541224 (hoho)   2022-06-26 10:17:00
作者: yoshonabee (我右手拿筆如神一般)   2022-06-26 10:31:00
優文推
作者: lovdkkkk (dk)   2022-06-26 11:10:00
推第一點跟那兩張圖 QQ
作者: as23041248 (KAIKAIKAI)   2022-06-26 11:18:00
這種思維很棒,透過問自己各種問題,考慮自己所在環境的狀況,釐清自己到底在做什麼,才開始蒐集資料,參考別人作法,解決問題。有時候直接想解決問題忽略掉前提,也是我常犯的毛病,感謝文章給我的提醒
作者: Arctica (欲聆聽,必先靜默)   2022-06-26 12:32:00
感謝 舒服
作者: lovdkkkk (dk)   2022-06-26 12:54:00
不過新創那段,剛巧我目前在新創,工程最近剛由 2 人增加到 3 人,倒是有 Unit/Api/E2E 測試,及 push 後自動測試與部署,不過測試只針對重點,覆蓋率極低 XDD
作者: kuan (kuan_hiroshi)   2022-06-26 13:54:00
作者: steven95421 (建中潘若迪)   2022-06-26 14:02:00
作者: moszap (無)   2022-06-26 14:10:00
作者: TheWhack (我是德華)   2022-06-26 14:25:00
我是覺得"問題"本身也可以不斷refine XD
作者: ppoozine (阿翔)   2022-06-26 14:32:00
作者: Y78 (Y78)   2022-06-26 14:34:00
作者: ccnancy (茶茶茶)   2022-06-26 15:02:00
作者: sky80420 (澤西哥)   2022-06-26 15:19:00
作者: ian90911 (xopowo)   2022-06-26 15:42:00
感謝分享
作者: yc86209 (yc86209)   2022-06-26 15:57:00
作者: stu87616 (文組工程師)   2022-06-26 16:28:00
感謝這串讓我知道很多 IT 不懂 Rest 也在寫 API
作者: CRPKT (crpkt)   2022-06-26 16:44:00
測試測到重點其實也比覆蓋率重要呀
作者: iamOsaka (歐沙卡)   2022-06-26 17:03:00
作者: mTwTm (天)   2022-06-26 17:04:00
非常完整
作者: Rmustang (大佐)   2022-06-26 17:10:00
作者: pttano (pttano)   2022-06-26 17:13:00
你是不是吃到jserv 口水,回文的style 這麼像
作者: drajan (EasoN)   2022-06-26 17:34:00
所以有人才會說提出夠好的問題 答案也出來一半了 就是這個意思 「提問」是科學精神的重要一環啊 工程師們
作者: NTUTM04 (TM終號機)   2022-06-26 18:09:00
推,整篇的回答很有條理且易理解
作者: waterwalk (心碎無聲)   2022-06-26 19:18:00
問問題是個學問 前陣子也看到stack overflow神人也有寫書說 怎麼樣問問題最合適(就是辣個C#神人)他寫的code如果編譯不過 編譯器要道歉的辣個人
作者: Belieeve (芥末拿鐵)   2022-06-26 19:32:00
推推Hsins大,回答得好完整
作者: zxc8787 (摸斗哈壓庫)   2022-06-26 20:15:00
作者: sharek (...)   2022-06-26 21:10:00
推詳細補充
作者: windmax1 (I do my best)   2022-06-26 21:20:00
好文必須推
作者: lofiktb (YOKcruisin)   2022-06-26 22:08:00
優文推
作者: kasimEnix (碰一張)   2022-06-26 23:25:00
推,真心感謝
作者: hsnusonic (sonic)   2022-06-26 23:36:00
好文推
作者: viper9709 (阿達)   2022-06-26 23:52:00
這問題本來就跟實際的狀況有關原po沒講的大家當然各自發揮XD
作者: endless1999 (jubee)   2022-06-27 00:46:00
作者: mirror0227 (鏡子)   2022-06-27 01:29:00
PTT充滿大神
作者: aa0983163178 (Yuki)   2022-06-27 07:20:00
作者: tay2510 (Tay)   2022-06-27 07:32:00
推!好文
作者: justaID (快樂崇拜)   2022-06-27 08:25:00
推好文,前面的提問思維,和後面的style分析都很值得思考,尤其開頭的提問思維讓我想到經典的客戶需求鞦韆漫畫
作者: tomap41017 (絕夢)   2022-06-27 09:18:00
推,這才是思考方式。
作者: ae86357961 (Jasper.Yang)   2022-06-27 10:08:00
推,受益良多
作者: chatnoir (對不起)   2022-06-27 10:45:00
好文不M嗎?
作者: zxc6414189   2022-06-27 12:19:00
作者: stiiveo (S哥)   2022-06-27 12:20:00
優質好文!
作者: lairx (lairx)   2022-06-27 12:41:00
作者: whatzup1124 (我是幹嘛)   2022-06-27 14:30:00
作者: Tube (水管)   2022-06-27 15:57:00
作者: jackflu (jackflu)   2022-06-27 17:15:00
好扯,太精彩了吧,開頭分享的文章也很具有啟發性
作者: peter98 (新兵)   2022-06-27 23:14:00
今年跳槽Amazon就是香 香爆
作者: zzzzzz6666 (Yam Man)   2022-06-27 23:22:00
作者: MissPigHead   2022-06-27 23:51:00
推,謝謝
作者: tenpoinyuki (阿蒼)   2022-06-27 23:59:00
作者: loxyz (loxyz)   2022-06-28 00:51:00
推。 小瑕疵 Android <==> iOS; Kotlin <==> Swift
作者: kop14922000 (MrDin)   2022-06-28 01:04:00
作者: tw11509 (John-117)   2022-06-28 02:16:00
作者: kingofsdtw (不能閒下來!!)   2022-06-28 04:24:00
安全性我一律回答404只有debug才開 return200 加 debug訊息
作者: tinuo (當歸人蔘)   2022-06-28 08:29:00
推一個,帶出很多觀點
作者: A1ch3mi5t (波霸奶綠微糖去冰)   2022-06-28 08:51:00
作者: zxcchiou (立叉西)   2022-06-28 10:14:00
推 謝謝學到了
作者: zegas (電風扇啊啊啊啊啊啊啊)   2022-06-28 12:32:00
作者: Kenqr (function(){})()   2022-06-28 17:42:00
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2022-06-29 10:32:00
完全沒想到 DevOps/SRE 的觀點,404確實是很好判斷的依據
作者: kira518 (佐勳)   2022-06-29 15:05:00
作者: corahoda   2022-06-30 00:03:00
作者: MangoTW (不在線上)   2022-07-01 02:09:00
這一串只推這一篇 見解卓越且點出正確的思考方向
作者: air4028 (丹尼爾)   2022-07-01 13:03:00
好文 推
作者: Gwendolynn (影法師)   2022-07-01 19:26:00
推推
作者: www54500 (夏恩)   2022-07-02 01:32:00
作者: EJLin (EJLin)   2022-07-02 15:09:00
完整優文推
作者: adminc (alf chou)   2022-07-02 18:33:00
作者: j606888 (丁丁老大)   2022-07-04 09:15:00
優質文推推

Links booklink

Contact Us: admin [ a t ] ucptt.com