Restful API 和RPC API

總結(jié)一下

  • RESTful 是目前最流行的 API 設(shè)計規(guī)范,用于 Web 數(shù)據(jù)接口的設(shè)計。(感覺比較適合大型項目、多團(tuán)隊合作項目)
  • RPC的核心思想是把本地的方法映射到API,比如我本地有一個方法是getUser()

RESTful的可讀性更好,即使完全不了解業(yè)務(wù),看到API也知道這個接口是干嘛的,但是有時候不好抽象,比如login操作,你用Restful如何抽象?
Restful規(guī)范最大的好處:命名統(tǒng)一,避免相同的功能因為命名風(fēng)格不同,而創(chuàng)建了一大堆冗余的接口。既浪費了編程資源(相同的功能寫了多個接口),又不好維護(hù)(修改一個功能,要修改多個命名不同的接口)

RPC規(guī)范的話,當(dāng)然是簡單暴力,后端程序員更喜歡,寫給自己小伙伴的接口規(guī)范,但是在大型項目、多team合作項目、前后端分離項目時,可讀性很差。有時候一個功能相同接口,會出現(xiàn)好幾個。因為可能項目移交給別的team做,新team沒空研究之前的代碼,直接寫一個新的接口完成同一個業(yè)務(wù)功能。
比如

  • /getUser?id=,
  • /getUserById?id=
  • /getUserByPrimary?id=
    但是有了restful規(guī)范的話,就可以大大降低這種事情的概率,因為都是 GET /users/{id}

REST VS RPC

  1. REST的主體是資源,而RPC更側(cè)重于動作。

  2. REST更偏向外部調(diào)用,RPC更偏向內(nèi)部調(diào)用。在國內(nèi),一般更偏向于RPC,比如阿里出的dubbo;在國外,更倡導(dǎo)REST,比如spring cloud,是個純REST的項目,不支持RPC。(當(dāng)然,近幾年REST在國內(nèi)也開始火起來了)

  3. REST其實是個效率很低的東西,特別是需要聯(lián)合查詢的時候;并且有些東西,也不好抽象成資源,比如用戶登錄、用戶退出

  4. RPC只需要關(guān)心業(yè)務(wù)場景,但是如果業(yè)務(wù)理解不夠,你可能不會理解這些API是做什么用的(優(yōu)秀的RESTful API的設(shè)計,就算不懂業(yè)務(wù),只要會一些英文,應(yīng)該通過URL就能猜到每個API是做什么的)。

  5. 前端可能更喜歡REST,而后端估計更傾向于RPC。

restful api細(xì)節(jié)

還是看阮一峰大佬的博客吧,更詳細(xì),摘錄幾個印象比較深的點

  1. 必須要摒棄RPC的做法啊,比如新增用戶
    標(biāo)準(zhǔn)寫法: POST /users
    如果你寫成 POST /users/add,那么就會有人寫成: POST /users/insert ,POST /users/create,所以賓語必須是名詞,而且最好是統(tǒng)一用復(fù)數(shù)

  2. 避免多級 URL
    GET /authors/12?categories=2

  3. response 必須是json的

  4. 返回正確的code

參考

阮一峰大佬的博客
http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html

講區(qū)別的
http://www.360doc.com/content/18/0730/00/99071_774291878.shtml

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容