歡迎您光臨深圳塔燈網(wǎng)絡(luò)科技有限公司!
          電話(huà)圖標(biāo) 余先生:13699882642

          網(wǎng)站百科

          為您解碼網(wǎng)站建設(shè)的點(diǎn)點(diǎn)滴滴

          RESTful API URL 設(shè)計(jì)

          發(fā)表日期:2019-09 文章編輯:小燈 瀏覽次數(shù):4246

          RESTful?是目前最流行的 API 設(shè)計(jì)規(guī)范,也是各公司招聘面試的項(xiàng)目之一。很多人對(duì) RESTful API 的設(shè)計(jì)還不是很規(guī)范,于是便有了本文。

          URL 的設(shè)計(jì),一般我們會(huì)采用:動(dòng)詞 + 賓語(yǔ)的形式表示。

          RESTful 的核心思想就是,客戶(hù)端發(fā)出的數(shù)據(jù)操作指令都是"動(dòng)詞 + 賓語(yǔ)"的結(jié)構(gòu)。比如,GET /articles這個(gè)命令,GET是動(dòng)詞,/articles是賓語(yǔ)。

          動(dòng)詞通常就是五種 HTTP 方法,對(duì)應(yīng) CRUD 操作。

          • GET:讀?。≧ead)
          • POST:新建(Create)
          • PUT:更新(Update)
          • PATCH:更新(Update),通常是部分更新
          • DELETE:刪除(Delete)

          根據(jù) HTTP 規(guī)范,動(dòng)詞一律大寫(xiě)。

          有些客戶(hù)端只能使用GET和POST這兩種方法。服務(wù)器必須接受POST模擬其他三個(gè)方法(PUT、PATCH、DELETE)。

          這時(shí),客戶(hù)端發(fā)出的 HTTP 請(qǐng)求,要加上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指定本次請(qǐng)求的方法是PUT,而不是POST。

          在 SpringMVC 中會(huì)添加一個(gè)?HiddenHttpMethodFilter 過(guò)濾器。它會(huì)將表單上隱藏域_method屬性改為put或者delete等再進(jìn)行提交。因?yàn)橹挥衒orm表單才具有post方法,而這個(gè)過(guò)濾器也只能將post方法轉(zhuǎn)化,get則不行。不懂的可以看這篇文章:https://blog.csdn.net/jaryle/article/details/73656426。

          賓語(yǔ)就是 API 的 URL,是 HTTP 動(dòng)詞作用的對(duì)象。它應(yīng)該是名詞,不能是動(dòng)詞。比如,/articles這個(gè) URL 就是正確的,而下面的 URL 不是名詞,所以都是錯(cuò)誤的。

          • /getAllCars
          • /createNewCar
          • /deleteAllRedCars

          既然 URL 是名詞,那么應(yīng)該使用復(fù)數(shù),還是單數(shù)?

          這沒(méi)有統(tǒng)一的規(guī)定,但是常見(jiàn)的操作是讀取一個(gè)集合,比如GET /articles(讀取所有文章),這里明顯應(yīng)該是復(fù)數(shù)。

          為了統(tǒng)一起見(jiàn),建議都使用復(fù)數(shù) URL,比如GET /articles/2要好于GET /article/2。

          常見(jiàn)的情況是,資源需要多級(jí)分類(lèi),因此很容易寫(xiě)出多級(jí)的 URL,比如獲取某個(gè)作者的某一類(lèi)文章。

          GET /authors/12/categories/2

          這種 URL 不利于擴(kuò)展,語(yǔ)義也不明確,往往要想一會(huì),才能明白含義。

          更好的做法是,除了第一級(jí),其他級(jí)別都用查詢(xún)字符串表達(dá)。

          GET /authors/12?categories=2

          下面是另一個(gè)例子,查詢(xún)已發(fā)布的文章。你可能會(huì)設(shè)計(jì)成下面的 URL。

          GET /articles/published

          查詢(xún)字符串的寫(xiě)法明顯更好。

          GET /articles?published=true

          RESTful API 最好的例子就是 github 網(wǎng)站。大家經(jīng)常使用,一定不陌生。所以可以借鑒 github 上的資源命名方式來(lái)開(kāi)發(fā)自己的產(chǎn)品,設(shè)計(jì)自己的?RESTful API 和 URL。


          本頁(yè)內(nèi)容由塔燈網(wǎng)絡(luò)科技有限公司通過(guò)網(wǎng)絡(luò)收集編輯所得,所有資料僅供用戶(hù)學(xué)習(xí)參考,本站不擁有所有權(quán),如您認(rèn)為本網(wǎng)頁(yè)中由涉嫌抄襲的內(nèi)容,請(qǐng)及時(shí)與我們聯(lián)系,并提供相關(guān)證據(jù),工作人員會(huì)在5工作日內(nèi)聯(lián)系您,一經(jīng)查實(shí),本站立刻刪除侵權(quán)內(nèi)容。本文鏈接:http://m.cjxv.cn/21361.html
          相關(guān)前端設(shè)計(jì)