使用Restful API設計更加規范的數據接口


什么是Restful API

REST是設計風格而不是標准。是指客戶端和服務器的交互形式。核心思想就是,客戶端發出的數據操作指令都是"動詞 + 賓語"的結構。

Restful API有幾個特性:

面向資源:接口命名都是zoos、animals,而不是getAllAnimals這樣的
使用Http動詞:GET/PUT/POST/DELETE/PATCH/HEAD/OPTIONS,而不是我們日常只用的GET和POST

設計原則

1、在接口命名時應該用名詞,不應該用動詞,因為通過接口操作到是資源。
2、在url中加入版本號,利於版本迭代管理更加直觀
https://www.rgc.com/v1/
3、對於資源的操作類型應該是通過http動詞表示。

  • GET /zoos:列出所有動物園
  • POST /zoos:新建一個動物園
  • GET /zoos/ID:獲取某個指定動物園的信息
  • PUT /zoos/ID:更新某個指定動物園的信息(提供該動物園的全部信息)
  • DELETE /zoos/ID:刪除某個動物園
  • GET /zoos/ID/animals:列出某個指定動物園的所有動物
  • DELETE /zoos/ID/animals/ID:刪除某個指定動物園的指定動物

4、HTTP Method分別對於資源的CURD操作

  • GET(SELECT):從服務器取出資源(一項或多項)。
  • POST(CREATE):在服務器新建一個資源。
  • PUT(UPDATE):在服務器更新資源(客戶端提供改變后的完整資源)。
  • PATCH(UPDATE):在服務器更新資源(客戶端提供改變的屬性)。
  • DELETE(DELETE):從服務器刪除資源。

5、復數 URL,既然 URL 是名詞,那么應該使用復數,還是單數?

這沒有統一的規定,但是常見的操作是讀取一個集合,比如GET /articles(讀取所有文章),這里明顯應該是復數。

為了統一起見,建議都使用復數 URL,比如GET /articles/2要好於GET /article/2。

6、 避免多級 URL

常見的情況是,資源需要多級分類,因此很容易寫出多級的 URL,比如獲取某個作者的某一類文章。

GET /authors/12/categories/2

這種 URL 不利於擴展,語義也不明確,往往要想一會,才能明白含義。

更好的做法是,除了第一級,其他級別都用查詢字符串表達。

GET /authors/12?categories=2

下面是另一個例子,查詢已發布的文章。你可能會設計成下面的 URL。

GET /articles/published

查詢字符串的寫法明顯更好。

GET /articles?published=true

issues

1、如果是對一條記錄有多種動作怎么做呢?
這里有兩種方式:

  • 第一種
POST /datas/1?action=reportError
POST /datas/1?action=mark
POST /datas/1?action=assign
  • 第二種
POST /datas/1/reportError
POST /datas/1/mark
POST /datas/1/assign

以上兩種方式很明顯第二種會更好一點

2、client驗證用戶名或者電話是否存在,該如何設計?
可以設計成這樣
GET /users/{userName}?action=check ,對userName進行check操作

參考閱讀

http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM