發表日期:2019-09 文章編輯:小燈 瀏覽次數:3878
RESTful?是目前最流行的 API 設計規范,也是各公司招聘面試的項目之一。很多人對 RESTful API 的設計還不是很規范,于是便有了本文。
URL 的設計,一般我們會采用:動詞 + 賓語的形式表示。
RESTful 的核心思想就是,客戶端發出的數據操作指令都是"動詞 + 賓語"的結構。比如,GET /articles這個命令,GET是動詞,/articles是賓語。
動詞通常就是五種 HTTP 方法,對應 CRUD 操作。
根據 HTTP 規范,動詞一律大寫。
有些客戶端只能使用GET和POST這兩種方法。服務器必須接受POST模擬其他三個方法(PUT、PATCH、DELETE)。
這時,客戶端發出的 HTTP 請求,要加上X-HTTP-Method-Override屬性,告訴服務器應該使用哪一個動詞,覆蓋POST方法。
POST /api/Person/4 HTTP/1.1X-HTTP-Method-Override: PUT
上面代碼中,X-HTTP-Method-Override指定本次請求的方法是PUT,而不是POST。
在 SpringMVC 中會添加一個?HiddenHttpMethodFilter 過濾器。它會將表單上隱藏域_method屬性改為put或者delete等再進行提交。因為只有form表單才具有post方法,而這個過濾器也只能將post方法轉化,get則不行。不懂的可以看這篇文章:https://blog.csdn.net/jaryle/article/details/73656426。
賓語就是 API 的 URL,是 HTTP 動詞作用的對象。它應該是名詞,不能是動詞。比如,/articles這個 URL 就是正確的,而下面的 URL 不是名詞,所以都是錯誤的。
既然 URL 是名詞,那么應該使用復數,還是單數?
這沒有統一的規定,但是常見的操作是讀取一個集合,比如GET /articles(讀取所有文章),這里明顯應該是復數。
為了統一起見,建議都使用復數 URL,比如GET /articles/2要好于GET /article/2。
常見的情況是,資源需要多級分類,因此很容易寫出多級的 URL,比如獲取某個作者的某一類文章。
GET /authors/12/categories/2
這種 URL 不利于擴展,語義也不明確,往往要想一會,才能明白含義。
更好的做法是,除了第一級,其他級別都用查詢字符串表達。
GET /authors/12?categories=2
下面是另一個例子,查詢已發布的文章。你可能會設計成下面的 URL。
GET /articles/published
查詢字符串的寫法明顯更好。
GET /articles?published=true
RESTful API 最好的例子就是 github 網站。大家經常使用,一定不陌生。所以可以借鑒 github 上的資源命名方式來開發自己的產品,設計自己的?RESTful API 和 URL。
日期:2019-09 瀏覽次數:6811
日期:2019-09 瀏覽次數:4677
日期:2019-09 瀏覽次數:5495
日期:2019-09 瀏覽次數:10712
日期:2019-09 瀏覽次數:10753
日期:2019-09 瀏覽次數:4464
日期:2019-09 瀏覽次數:4055
日期:2019-09 瀏覽次數:3877
日期:2019-09 瀏覽次數:3449
日期:2019-09 瀏覽次數:4171
日期:2019-09 瀏覽次數:7901
日期:2019-09 瀏覽次數:3700
日期:2019-09 瀏覽次數:4223
日期:2019-09 瀏覽次數:3737
日期:2019-09 瀏覽次數:3877
日期:2019-09 瀏覽次數:4161
日期:2019-09 瀏覽次數:5745
日期:2019-09 瀏覽次數:3432
日期:2019-09 瀏覽次數:4475
日期:2019-09 瀏覽次數:3927
日期:2019-09 瀏覽次數:4169
日期:2019-09 瀏覽次數:4206
日期:2019-09 瀏覽次數:3539
日期:2019-09 瀏覽次數:4369
日期:2019-09 瀏覽次數:5476
日期:2019-09 瀏覽次數:5325
日期:2019-09 瀏覽次數:3610
日期:2019-09 瀏覽次數:8975
日期:2019-09 瀏覽次數:4575
日期:2019-09 瀏覽次數:3908
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.