為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴
發(fā)表日期:2019-09 文章編輯:小燈 瀏覽次數(shù):3894
RESTful?是目前最流行的 API 設(shè)計(jì)規(guī)范,也是各公司招聘面試的項(xiàng)目之一。很多人對 RESTful API 的設(shè)計(jì)還不是很規(guī)范,于是便有了本文。
URL 的設(shè)計(jì),一般我們會(huì)采用:動(dòng)詞 + 賓語的形式表示。
RESTful 的核心思想就是,客戶端發(fā)出的數(shù)據(jù)操作指令都是"動(dòng)詞 + 賓語"的結(jié)構(gòu)。比如,GET /articles這個(gè)命令,GET是動(dòng)詞,/articles是賓語。
動(dòng)詞通常就是五種 HTTP 方法,對應(yīng) CRUD 操作。
根據(jù) HTTP 規(guī)范,動(dòng)詞一律大寫。
有些客戶端只能使用GET和POST這兩種方法。服務(wù)器必須接受POST模擬其他三個(gè)方法(PUT、PATCH、DELETE)。
這時(shí),客戶端發(fā)出的 HTTP 請求,要加上X-HTTP-Method-Override屬性,告訴服務(wù)器應(yīng)該使用哪一個(gè)動(dòng)詞,覆蓋POST方法。
POST /api/Person/4 HTTP/1.1X-HTTP-Method-Override: PUT
上面代碼中,X-HTTP-Method-Override指定本次請求的方法是PUT,而不是POST。
在 SpringMVC 中會(huì)添加一個(gè)?HiddenHttpMethodFilter 過濾器。它會(huì)將表單上隱藏域_method屬性改為put或者delete等再進(jìn)行提交。因?yàn)橹挥衒orm表單才具有post方法,而這個(gè)過濾器也只能將post方法轉(zhuǎn)化,get則不行。不懂的可以看這篇文章:https://blog.csdn.net/jaryle/article/details/73656426。
賓語就是 API 的 URL,是 HTTP 動(dòng)詞作用的對象。它應(yīng)該是名詞,不能是動(dòng)詞。比如,/articles這個(gè) URL 就是正確的,而下面的 URL 不是名詞,所以都是錯(cuò)誤的。
既然 URL 是名詞,那么應(yīng)該使用復(fù)數(shù),還是單數(shù)?
這沒有統(tǒng)一的規(guī)定,但是常見的操作是讀取一個(gè)集合,比如GET /articles(讀取所有文章),這里明顯應(yīng)該是復(fù)數(shù)。
為了統(tǒng)一起見,建議都使用復(fù)數(shù) URL,比如GET /articles/2要好于GET /article/2。
常見的情況是,資源需要多級分類,因此很容易寫出多級的 URL,比如獲取某個(gè)作者的某一類文章。
GET /authors/12/categories/2
這種 URL 不利于擴(kuò)展,語義也不明確,往往要想一會(huì),才能明白含義。
更好的做法是,除了第一級,其他級別都用查詢字符串表達(dá)。
GET /authors/12?categories=2
下面是另一個(gè)例子,查詢已發(fā)布的文章。你可能會(huì)設(shè)計(jì)成下面的 URL。
GET /articles/published
查詢字符串的寫法明顯更好。
GET /articles?published=true
RESTful API 最好的例子就是 github 網(wǎng)站。大家經(jīng)常使用,一定不陌生。所以可以借鑒 github 上的資源命名方式來開發(fā)自己的產(chǎn)品,設(shè)計(jì)自己的?RESTful API 和 URL。
日期:2019-09 瀏覽次數(shù):6829
日期:2019-09 瀏覽次數(shù):4697
日期:2019-09 瀏覽次數(shù):5509
日期:2019-09 瀏覽次數(shù):10733
日期:2019-09 瀏覽次數(shù):10775
日期:2019-09 瀏覽次數(shù):4484
日期:2019-09 瀏覽次數(shù):4078
日期:2019-09 瀏覽次數(shù):3893
日期:2019-09 瀏覽次數(shù):3460
日期:2019-09 瀏覽次數(shù):4193
日期:2019-09 瀏覽次數(shù):7915
日期:2019-09 瀏覽次數(shù):3723
日期:2019-09 瀏覽次數(shù):4242
日期:2019-09 瀏覽次數(shù):3745
日期:2019-09 瀏覽次數(shù):3890
日期:2019-09 瀏覽次數(shù):4176
日期:2019-09 瀏覽次數(shù):5759
日期:2019-09 瀏覽次數(shù):3442
日期:2019-09 瀏覽次數(shù):4489
日期:2019-09 瀏覽次數(shù):3945
日期:2019-09 瀏覽次數(shù):4182
日期:2019-09 瀏覽次數(shù):4221
日期:2019-09 瀏覽次數(shù):3554
日期:2019-09 瀏覽次數(shù):4378
日期:2019-09 瀏覽次數(shù):5485
日期:2019-09 瀏覽次數(shù):5333
日期:2019-09 瀏覽次數(shù):3628
日期:2019-09 瀏覽次數(shù):8991
日期:2019-09 瀏覽次數(shù):4582
日期:2019-09 瀏覽次數(shù):3925
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.