整理-restful風格-URI設計可以遵循的10條原則

restFul理論知識

  • " 如果一個架構符合REST的約束條件和原則,我們就稱它爲RESTful架構"。
  • “REST架構風格並不是綁定在HTTP上,只不過目前HTTP是唯一與REST相關的實例”
  • “要讓一個資源可以被識別,需要有個唯一標識,在Web中這個唯一標識就是URI(Uniform Resource Identifier)。URI既可以看成是資源的地址,也可以看成是資源的名稱。”
  • “URI的設計應該遵循可尋址性原則,具有自描述性,需要在形式上給人以直覺上的關聯。”

URI設計的一些原則

  • 如何才能讓"URI的設計應該遵循可尋址性原則,具有自描述性,需要在形式上給人以直覺上的關聯"呢?最基本,可以把握如下原則

1. post、get、put、delete包含不同的含義。

方式 含義
POST 首次創建
GET 獲取
PUT 更新
DELETE 刪除

2.post、get、put、delete的構成了資源CRUD。

方式 操作
POST C
GET R
PUT U
DELETE D

3.uri中可以不用出現save、delete、update、findAll等關鍵字,只需要合理使用不同請求法方式即可。

傳統:http://localhost:8080/user/save
REST:http://localhost:8080/user POST 執行保存

傳統:http://localhost:8080/user/delete?id=1
REST:http://localhost:8080/user/1 DELETE 執行刪除

傳統:http://localhost:8080/user/update?id=1
REST:http://localhost:8080/user/1 PUT 執行更新 1就是id

傳統:http://localhost:8080/user/findAll
REST:http://localhost:8080/user GET 查所有

4.路徑本身就可以傳遞參數,不用一定需要?key=value形式

傳統:http://localhost:8080/user/delete?id=1
REST:http://localhost:8080/user/1 DELETE 執行刪除

5._或-來讓URI可讀性更好

越多的網站使用_或-來分隔一些單詞,讓URI看上去更爲人性化。 例如國內比較出名的開源中國社區,它上面的新聞地址就採用這種風格, 如http://www.oschina.net/news/38119/oschina-translate-reward-plan

6.使用/來表示資源的層級關係

https://github.com/git/git/commit/e3af72cdafab5993d18fae056f87e1d675913d08

就表示了一個多級的資源, 指的是git用戶的git項目的某次提交記錄,又例如/orders/2012/10可以用來表示2012年10月的訂單記錄。

7.?用來過濾資源

/pulls?state=closed用來表示git項目中已經關閉的推入請求, 這種URL通常對應的是一些特定條件的查詢結果或算法運算結果。

8.,或;可以用來表示同級資源的關係

哪天github可以比較某個文件在隨意兩次提交記錄之間的差異,或許可以使用/git/git /block-sha1/sha1.h/compare/e3af72cdafab5993d18fae056f87e1d675913d08;bd63e61bdf38e872d5215c07b264dcc16e4febca作爲URI。

9.版本號可以在HTTP請求頭信息的Accept字段中進行區分

http://www.example.com/app/foo

不同版本請求頭

Accept: vnd.example-com.foo+json; version=1.0
Accept: vnd.example-com.foo+json; version=1.1
Accept: vnd.example-com.foo+json; version=2.0

# 10.uri不包含動作

URI包含動詞(正確的寫法是把動詞transfer改成名詞transaction),因爲post本生就包含具體的動作。

錯誤:
POST /accounts/1/transfer/500/to/2
正確:
POST /accounts/1/transaction/500/to/2

同樣如下也是錯誤的

GET /getUser/1
POST /createUser
PUT /updateUser/1
DELETE /deleteUser/1

參考:https://www.runoob.com/w3cnote/restful-architecture.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章