Re: [請益] 所以,到底什麼是RESTful API?

作者: jdlee (jdlee)   2019-03-12 14:14:25
※ 引述《thefattiger (LawTea)》之銘言:
: 但查了一下資訊卻還是摸不著頭緒
: 估狗RESTful API 大概都是講到一下幾點
: 1.資源要用URL表示
: 這不是本來就這樣的嗎?
: 2.Server要回傳對應的Http Status Code
: 這不是也本來就這樣的嗎?
: 3.用GET/POST/PUT等動詞表達對資源的操作
: 意思是說, 本來只有GET/POST用法, 但其實還有PUT/PATCH/DELETE等等
: 應該要善加利用這些動詞把操作分得更清楚?
: 4.Stateless
: 這也很常看到,但Http不是本來就Stateless的嗎?
:
: 我的問題主要是,這些東西不是Http本來就有的嗎?
您的問題圍繞在"這不是Http本來就這樣的嗎"。RESTful API是利用
既有的A領域工具解決B領域的問題。B領域的人可能會覺得很新奇,
但是熟悉A領域的人,可能會覺得本來就是這樣,沒什麼特別的。
遙想199x年的古老時代,PC軟體工程師J用Java寫了一個資料處理程式。
另一個PC軟體工程師D跟J說: 我的專案剛好需要你的程式。你的程式
可以copy給我嗎?讓我可以編譯連結到我的專案程式。
J: 不行,這個程式我要申請專利,我不想copy給你。而且,你的程式是
用Delphi寫的,你要如何連結我的Java程式?
網路專家H聽到兩人的談話,也加入討論。
H: 現在網路很流行,何不這樣,J的程式放在J的電腦,不用copy給D。
讓D的電腦裡的程式透過網路呼叫J的程式,傳回結果。
J: 這麼神奇!?但是D的程式要如何透過網路呼叫我的函式呢?如何傳遞
參數呢?
D: 聽說FTP可以用來在網路上傳檔案,我們把它用來傳參數。我把參數
存成檔案,用ftp傳給你,你也把結果存成檔案,用ftp傳回給我。
J: 這個方式聽起來似乎可行,但是感覺執行起來有點麻煩。
H: 現在WWW開始流行,我家阿嬤都在用HTTP瀏覽網站。你們何不使用
HTTP? HTTP的request-response不就好像API函式呼叫嗎?HTTP的url
剛好可以當函式名稱+參數, HTTP的status code剛好也可以拿來當
function error/status code。HTTP的GET/POST/PUT/PATCH/DELETE
剛好可以對應你的資料處理CRUD。如果你的程式專利通過了,你要開放
給全世界上千萬軟體工程師呼叫,剛好HTTP是stateless,可以讓你的
電腦負荷比較小。
D: 太好了,太漂亮了,beautiful! 這種用HTTP做遠端API呼叫的方式
要叫什麼名字呢?
H: 用這種方式,工程師們不用煩惱跨語言編譯連結...等很多問題,
可以省下很多時間,這些時間可以拿來好好休息護肝。我們就叫它
RESTful API吧。
作者: geroge0820 (可.....可惡)   2019-03-12 15:03:00
這篇深得我心 太神了
作者: PureEatTea (茶花真好喝)   2019-03-12 15:31:00
謝謝你, 你的說明和例子讓科普了我
作者: BaJiaJhon (BaJiaJhon)   2019-03-12 15:40:00
作者: oas (GTr)   2019-03-12 15:42:00
推推~~ lol
作者: pxycho (trolltrolltroll)   2019-03-12 15:55:00
這一串我最愛這篇
作者: BBSealion (海獅)   2019-03-12 16:12:00
讚XD
作者: DCTmaybe (竹竹人)   2019-03-12 17:33:00
滿滿的rest~讚讚
作者: bheegrl   2019-03-12 17:44:00
作者: leon1757tw (leon1757o)   2019-03-12 18:32:00
作者: tz5514 (屁安)   2019-03-12 20:28:00
幹 原來我多年來理解的REST是錯的 這篇才是真。rest 淚推
作者: vavamos (vavamos)   2019-03-12 21:36:00
這對話好像head first喔XDDDDDDDDDDDDDDDDDDDDDDDDDDDFF
作者: gpctv (gpctv)   2019-03-12 21:54:00
都是你害我又去google來對照你的說法,謝謝
作者: Royne (哲哉)   2019-03-12 22:00:00
作者: hahaRegina (喔)   2019-03-12 22:57:00
推~~
作者: moonxuan (moon)   2019-03-12 23:25:00
好像有點可愛
作者: crazykai (Gooday)   2019-03-13 00:40:00
Head First RESTful API!!
作者: umum29 (....)   2019-03-13 00:53:00
很好的說明 當比較XML-RPC SOAP RESTFul都要從歷史演進看
作者: LERICAL (統二布丁)   2019-03-13 01:22:00
推推
作者: internetms52 (Oaide)   2019-03-13 07:20:00
作者: akito117 (宗益)   2019-03-13 10:51:00
作者: mail3403   2019-03-13 11:54:00
忽然恍然大悟 XD
作者: Daiblo2 (心)   2019-03-13 16:38:00
寫得真好懂 推一個~~~
作者: terry01333 (terry)   2019-03-13 18:40:00
作者: sa0124 ((恩恩))   2019-03-13 20:06:00
作者: leo770429 (leo)   2019-03-13 23:21:00
高手
作者: wangm4a1 (水兵)   2019-03-14 01:00:00
真的假的!!
作者: Kennyq (舞光十射~*)   2019-03-14 03:08:00
教得淺顯易懂,像名師的教法
作者: shorty696820 (虹彩弟弟)   2019-03-14 08:22:00
太傳神啦XDDD
作者: LeonSun (MorningSun)   2019-03-14 11:11:00
神解析,淺顯易懂!
作者: godxsdog (Zela)   2019-03-14 18:34:00
推推
作者: mathrew (Joey)   2019-03-14 21:08:00
推推
作者: lina7inverse (杉森‧費西佛)   2019-03-14 21:20:00
朝聖!朋友推薦,看完後特地登入推啊啊啊
作者: Lonelygod (平民百姓)   2019-03-15 00:47:00
終於可以看得懂了
作者: mon78892002 (symphony)   2019-03-15 01:38:00
簡單明瞭
作者: gmoz ( This can't do that. )   2019-03-15 15:35:00
XD
作者: TitanEric (泰坦)   2019-03-16 00:23:00
大推
作者: nishishishi (nishishishi)   2019-03-16 17:19:00
終於覺得REST簡單不是唬洨的 這篇有種魔力www
作者: benjamin99 (BigPaPa)   2019-03-16 20:28:00
為啥一個接近唬洨的說明會被推這麼多啊 ...
作者: koppli60143 (emp)   2019-03-16 21:24:00
推推 很好理解
作者: bird0603136 (哈豆肯!)   2019-03-17 15:47:00
作者: profiles (pforileS)   2019-03-17 19:40:00
簡單說就是Common Gateway Interface,簡稱CGI
作者: WolfTeacher (狼師)   2019-03-17 21:58:00
感謝大神
作者: richer6605 (Rhapsody)   2019-03-18 01:41:00
覺得好像一切都通了XDD 大推
作者: Rmustang (大佐)   2019-03-18 08:36:00
太強了 老師的料
作者: lebniz   2019-03-18 10:17:00
好理解!
作者: sscat (sl15)   2019-03-18 15:13:00
推個
作者: roger00 (Stage Column(?))   2019-03-20 19:55:00
優質
作者: fantastic340 (なすに)   2019-03-21 11:42:00
淺顯易懂推
作者: oyaji5566 (大叔56)   2019-03-25 13:06:00
非常的reat打錯了 非常的rest

Links booklink

Contact Us: admin [ a t ] ucptt.com