譯 究竟什麼是RESTful風格的程式設計

2021-09-18 02:48:46 字數 1689 閱讀 3014

首先要說的是,這是來自stackoverflow的乙個高票答案(提問的問題就是我這篇翻譯的標題),其次就是這個回答有點偏離正題,但是不影響我們對restful的理解,最起碼讓我走出了乙個誤區,這裡強烈推薦另外一篇文章:我是咋向我老婆解釋rest滴,看的茅塞頓開有沒有!!

rest是web世界的基本架構原則,關於web最神奇的事就是:明明之前客戶端對伺服器以及伺服器資源一無所知,客戶端(瀏覽器)和伺服器卻可以使用複雜的方式來相互作用 。而關鍵的約束就是伺服器以及瀏覽器客戶端都在使用媒介上達成一致,而在web裡我們都知道這個媒介就是html。

所以這貨是怎麼用在http,我們又怎麼在實踐中使用呢?https是面向動作(verb)和資源(resource)的,我覺得幾乎所有的人都知道經常用的兩個動作就是get和post,但是實際上http標準還定義了其他的一些動作比如delect和put,這些動作根據伺服器指令規定也會作用在資源上。

乙個rest api應該把所有的精力都放在定義被用在表示資源和驅動應用狀態的**型別(media type)上邊,或者是為已經存在的標準**型別定義擴充套件的關係名以及超文字標記

乙個對基本資源「/」的請求可能返回一些下邊這樣的:

request:

get /
response:

200 ok

,

]}

根據media的描述我們可以從部分被稱為鏈結的部分上得到一些關於資源的資訊,這被稱為超**鏈結。在這種情況下,我們被告知了可以通過造另外乙個鏈結「/user」來找尋乙個user列表:

request:

get /user
response:

200 ok

, ,]},

,,]}

],"links": [

]}

我們從這個鏈結裡又被告知了許多的東西,比如,我們知道我們可以通過posting這個「/user」來建立乙個user:

request:

post /user

post /user

response:

201 created

, ,]},

"links":

}

我們同樣知道了可以改變現有的資料:

request:

put /user/1

response:

200 ok

, ,]},

"links":

}

注意我們使用的不同的動詞(get, put, post, delete etc.)來操縱資源,當然我們假設客戶端的部分只有我們的media定義

深入閱讀:

martin fowler's thoughts

paypalde api | has hypermedia controls

(這篇文章因為其主觀性而備受批評,而大多數的批評都是得當的,我之前的回答似乎更偏向與rest是如何在頭幾年實施的而不是現在大家看到的,我已經修改了答案使之更符合題目)

編輯於1月18號

什麼是restful風格

傳統的url都是 xx 是什麼都可以猜出來,後來加密之後傳送到後台,然後就出現了所謂的rest,比較流行,但是 有好有壞,用起來靈活的東西 也比較複雜 就像是這個鏈結 最後的數字是它的id或者乙個id的對映,這樣在url裡的資料可以傳到request裡面被後台程式獲取。我理解的restful是 1....

什麼是RESTful風格

http不僅僅是傳輸協議,更是一種應用協議。rest,即representational state transfer的縮寫。意為是 表現層狀態轉化 restful表示一種風格,理解rest前需要理解資源,何謂資源,廣義的資源是指可以操作的所有物件。可能是乙個系統資源,如txt jgp xml 亦可...

什麼是restful風格?

restful api 設計指南 阮一峰 一種軟體架構風格 設計風格,而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和伺服器互動類的軟體。基於這個風格設計的軟體可以更簡潔,更有層次,更易於實現快取等機制。api與使用者的通訊協議,總是使用https協議。應該盡量將api部署在專用網域...