restful web services學習筆記,在此記錄以備以後參考
[b]在應用裡每個有價值的事物都應該被暴露為乙個資源。[/b]
[size=medium]一般roa設計步驟:[/size]
1.規劃資料集
2.把資料集劃分為資源
對於其中每種資源:
3.用uri為該資源命名
4.暴露乙個統一介面的子集
5.設計來自客戶端的表示
6.設計發給客戶端的表示
7.用超連結和表單把該資源與已有資源聯絡起來
8.考慮有哪些典型的事件經過
9.考慮可能出現哪些錯誤情況
[size=medium]可定址性[/size]
如果乙個web服務將其資料集裡有價值部分作為資源發布出來,那麼該應用就是可定址的。乙個uri應當只表示乙個資源。乙個資源的不同表示可以使用不同的uri,例如:/release/104.html和/release/104_en.html
[size=medium]狀態與無狀態性[/size]
rest服務裡狀態分為兩種:資源狀態(即關於資源的資訊)和應用狀態(即關於客戶端在應用中所處狀態的資訊)。資源狀態儲存在服務端,而且只能以表示的形式發給客戶端。應用狀態儲存在客戶端;當它能夠建立、修改或刪除乙個資源時,它將作為post、put或delete請求的一部分傳送給伺服器,成為資源狀態。例如使用搜尋引擎時提交乙個關鍵字得到查詢結果,然後我們又進行翻頁,這裡關鍵字和頁碼都是屬於應用狀態。
[size=medium]統一介面[/size]
get:獲取乙個資源的表示
put:建立乙個新資源,修改已有資源。
delete:刪除已有資源
post:建立從屬於某個父資源的資源,也可以用它來為資源的當前狀態新增資料。(這裡的新增資料和put的用法修改已有資源有區別,例如:通過post向伺服器提交新的log)
head:獲取的乙個子包含元資料的方法
options:檢視乙個資源支援哪些http方法。options請求的響應裡含有http allow報頭(header)。allow報頭的例子:allow:get,head 這個報頭表明:該資源支援get和head請求。
put和post動作
向新資源發put請求
向已有資源發put請求
post
weblogs
n/a(資源已存在)
無效果建立乙個新部落格
weblogs/myweblog
建立該部落格
修改該部落格的設定
往部落格裡新增一篇文章
weblogs/myweblog/entries/1
n/a(你無法知道這個uri)
[color=red]put與post的區別就在於:假如是客戶端負責決定新資源採用什麼uri,那就用put;假如是伺服器負責新資源採用什麼uri,那就用post。put的實現要求具有等冪性而post的實現可以沒有等冪性[/color]
[size=medium]uri設計[/size]
uri設計有三條基本原則:
1.用路徑變數(path variables)來表達層次結構:weblogs/myweblog/entries/1。
2.用逗號或分號表達非層次結構:/parent/child1;child2 /earth/43.2,45.6。當作用域資訊的次序有關緊要時,就用逗號,否則就用分號。
3.用查詢變數(query variables)來表達演算法的輸入,例如:/search?q=jellyfish&start=20。
REST學習筆記
其實嚴格來說算不上是學習筆記,只是一些資源的整合,記錄一下最近學了啥,也給剛接觸的同學節省一些時間。不過還是一頭霧水,看不到能執行的 我就難以理解,逃 入門 通俗解答什麼是rest 知乎 要點 5.其實這篇文章的重點在於最後的參考文獻是非常好的閱讀列表 如下 很多都很適合用來學習,其中有些我會在後面...
REST與SOAP之比較 REST篇
rest能夠在計算機領域被廣泛採用,它走的道路是不同尋常的。這個術語是由roy fielding創造的。在web方面,我們必須承認fielding是非常精通的,他曾經幫助建立http 1.0規範,該規範從1996年開始就為web提供基本準則。我有這樣乙個推斷,在計算機世界中,但凡那些讓開發人員記住的...
WCF中的REST架構一(REST 概述)
wcf中的 rest 架構一 rest 概述 不同的人似乎對 rest 有不同的定義,有些定義是非常嚴格的,而有些則是比較自由的。我傾向於認為 rest 架構存在於乙個連續的範圍裡,如圖所示 我們可以認為 rest 背後隱含的基本理念如下 越簡單越好 web 一直是非常成功的。web 是很簡單的。w...