總結(jié)一下
- RESTful 是目前最流行的 API 設(shè)計(jì)規(guī)范,用于 Web 數(shù)據(jù)接口的設(shè)計(jì)妻坝。(感覺比較適合大型項(xiàng)目、多團(tuán)隊(duì)合作項(xiàng)目)
- RPC的核心思想是把本地的方法映射到API芥颈,比如我本地有一個方法是getUser()
RESTful的可讀性更好惠勒,即使完全不了解業(yè)務(wù)赚抡,看到API也知道這個接口是干嘛的爬坑,但是有時候不好抽象,比如login操作涂臣,你用Restful如何抽象盾计?
Restful規(guī)范最大的好處:命名統(tǒng)一,避免相同的功能因?yàn)槊L(fēng)格不同赁遗,而創(chuàng)建了一大堆冗余的接口署辉。既浪費(fèi)了編程資源(相同的功能寫了多個接口),又不好維護(hù)(修改一個功能岩四,要修改多個命名不同的接口)
RPC規(guī)范的話哭尝,當(dāng)然是簡單暴力,后端程序員更喜歡剖煌,寫給自己小伙伴的接口規(guī)范材鹦,但是在大型項(xiàng)目、多team合作項(xiàng)目耕姊、前后端分離項(xiàng)目時桶唐,可讀性很差。有時候一個功能相同接口茉兰,會出現(xiàn)好幾個尤泽。因?yàn)榭赡茼?xiàng)目移交給別的team做,新team沒空研究之前的代碼规脸,直接寫一個新的接口完成同一個業(yè)務(wù)功能坯约。
比如
- /getUser?id=,
- /getUserById?id=
- /getUserByPrimary?id=
但是有了restful規(guī)范的話莫鸭,就可以大大降低這種事情的概率鬼店,因?yàn)槎际?GET /users/{id}
REST VS RPC
REST的主體是資源,而RPC更側(cè)重于動作黔龟。
REST更偏向外部調(diào)用妇智,RPC更偏向內(nèi)部調(diào)用滥玷。在國內(nèi),一般更偏向于RPC巍棱,比如阿里出的dubbo惑畴;在國外,更倡導(dǎo)REST航徙,比如spring cloud如贷,是個純REST的項(xiàng)目,不支持RPC到踏。(當(dāng)然杠袱,近幾年REST在國內(nèi)也開始火起來了)
REST其實(shí)是個效率很低的東西,特別是需要聯(lián)合查詢的時候窝稿;并且有些東西楣富,也不好抽象成資源,比如用戶登錄伴榔、用戶退出
RPC只需要關(guān)心業(yè)務(wù)場景纹蝴,但是如果業(yè)務(wù)理解不夠,你可能不會理解這些API是做什么用的(優(yōu)秀的RESTful API的設(shè)計(jì)踪少,就算不懂業(yè)務(wù)塘安,只要會一些英文,應(yīng)該通過URL就能猜到每個API是做什么的)援奢。
前端可能更喜歡REST兼犯,而后端估計(jì)更傾向于RPC。
restful api細(xì)節(jié)
還是看阮一峰大佬的博客吧集漾,更詳細(xì)切黔,摘錄幾個印象比較深的點(diǎn)
必須要摒棄RPC的做法啊,比如新增用戶
標(biāo)準(zhǔn)寫法: POST /users
如果你寫成 POST /users/add帆竹,那么就會有人寫成: POST /users/insert ,POST /users/create绕娘,所以賓語必須是名詞,而且最好是統(tǒng)一用復(fù)數(shù)避免多級 URL
GET /authors/12?categories=2response 必須是json的
返回正確的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