sponsored links
    
※ 引述《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吧。

--

    

※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.157.17 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1552371268.A.096.html
geroge0820: 這篇深得我心 太神了 03/12 15:03
PureEatTea: 謝謝你, 你的說明和例子讓科普了我 03/12 15:31
BaJiaJhon: 推 03/12 15:40
oas: 推推~~ lol 03/12 15:42
pxycho: 這一串我最愛這篇 03/12 15:55
BBSealion: 讚XD 03/12 16:12
DCTmaybe: 滿滿的rest~讚讚 03/12 17:33
bheegrl: 推 03/12 17:44
leon1757tw: 推 03/12 18:32
tz5514: 幹 原來我多年來理解的REST是錯的 這篇才是真。rest 淚推 03/12 20:28
vavamos: 這對話好像head first喔XDDDDDDDDDDDDDDDDDDDDDDDDDDDFF 03/12 21:36
gpctv: 都是你害我又去google來對照你的說法,謝謝 03/12 21:54
Royne: 讚 03/12 22:00
hahaRegina: 推~~ 03/12 22:57
moonxuan: 好像有點可愛 03/12 23:25
crazykai: Head First RESTful API!! 03/13 00:40
umum29: 很好的說明 當比較XML-RPC SOAP RESTFul都要從歷史演進看 03/13 00:53
LERICAL: 推推 03/13 01:22
internetms52: 推 03/13 07:20
akito117: 推 03/13 10:51
mail3403: 忽然恍然大悟 XD 03/13 11:54
Daiblo2: 寫得真好懂 推一個~~~ 03/13 16:38
terry01333: 推 03/13 18:40
sa0124: 推 03/13 20:06
leo770429: 高手 03/13 23:21
wangm4a1: 真的假的!! 03/14 01:00
Kennyq: 教得淺顯易懂,像名師的教法 03/14 03:08
shorty696820: 太傳神啦XDDD 03/14 08:22
LeonSun: 神解析,淺顯易懂! 03/14 11:11
godxsdog: 推推 03/14 18:34
mathrew: 推推 03/14 21:08
lina7inverse: 朝聖!朋友推薦,看完後特地登入推啊啊啊 03/14 21:20
Lonelygod: 終於可以看得懂了 03/15 00:47
mon78892002: 簡單明瞭 03/15 01:38
gmoz: XD 03/15 15:35
TitanEric: 大推 03/16 00:23
nishishishi: 終於覺得REST簡單不是唬洨的 這篇有種魔力www 03/16 17:19
benjamin99: 為啥一個接近唬洨的說明會被推這麼多啊 ... 03/16 20:28
koppli60143: 推推 很好理解 03/16 21:24
bird0603136: 推 03/17 15:47
profiles: 簡單說就是Common Gateway Interface,簡稱CGI 03/17 19:40
WolfTeacher: 感謝大神 03/17 21:58
richer6605: 覺得好像一切都通了XDD 大推 03/18 01:41
Rmustang: 太強了 老師的料 03/18 08:36
lebniz: 好理解! 03/18 10:17
sscat: 推個 03/18 15:13
roger00: 優質 03/20 19:55
fantastic340: 淺顯易懂推 03/21 11:42
oyaji5566: 非常的reat 03/25 13:06
oyaji5566: 打錯了 非常的rest 03/25 13:06
XasonLai: 推 03/30 00:57
qscez: 水哦 04/10 19:12


網友評論

sponsored links

搜尋主題

sponsored links
sponsored links

推薦閱讀

大家正在看

sponsored links
BTrend 2018 Abuse form