日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RPC和REST区别

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RPC和REST区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先要明確一點:REST 實際上只是一種設計風格,它并不是標準。(所以你可以看到網上一大堆的各種最佳實踐,設計指南,但是沒有人說設計標準)。

?

說說幾個重要的概念:

1、REST 是面向資源的,這個概念非常重要,而資源是通過 URI 進行暴露。
URI 的設計只要負責把資源通過合理方式暴露出來就可以了。對資源的操作與它無關,操作是通過 HTTP動詞來體現,所以REST 通過 URI 暴露資源時,會強調不要在 URI 中出現動詞。

比如:左邊是錯誤的設計,而右邊是正確的

?
  • GET /rest/api/getDogs --> GET /rest/api/dogs 獲取所有小狗狗

  • GET /rest/api/addDogs --> POST /rest/api/dogs 添加一個小狗狗

  • GET /rest/api/editDogs/:dog_id --> PUT /rest/api/dogs/:dog_id 修改一個小狗狗

  • GET /rest/api/deleteDogs/:dog_id --> DELETE /rest/api/dogs/:dog_id 刪除一個小狗狗

  • 左邊的這種設計,很明顯不符合REST風格,上面已經說了,URI 只負責準確無誤的暴露資源,而 getDogs/addDogs...已經包含了對資源的操作,這是不對的。相反右邊卻滿足了,它的操作是使用標準的HTTP動詞來體現。

    2、REST很好地利用了HTTP本身就有的一些特征,如HTTP動詞、HTTP狀態碼、HTTP報頭等等
    REST API 是基于 HTTP的,所以你的API應該去使用 HTTP的一些標準。這樣所有的HTTP客戶端(如瀏覽器)才能夠直接理解你的API(當然還有其他好處,如利于緩存等等)。REST 實際上也非常強調應該利用好 HTTP本來就有的特征,而不是只把 HTTP當成一個傳輸層這么簡單了。

    HTTP動詞

    ?
  • GET 獲取一個資源

  • POST 添加一個資源

  • PUT 修改一個資源

  • DELETE 刪除一個資源

  • 實際上,這四個動詞實際上就對應著增刪改查四個操作,這就利用了HTTP動詞來表示對資源的操作。

    HTTP狀態碼

    ?
  • 200 OK

  • 400 Bad Request

  • 500 Internal Server Error

  • 在 APP 與 API 的交互當中,其結果無非就三種狀態:

    • 所有事情都按預期正確執行完畢 - 成功
    • APP 發生了一些錯誤 – 客戶端錯誤
    • API 發生了一些錯誤 – 服務器端錯誤

    這三種狀態與上面的狀態碼是一一對應的。

    HTTP報頭

    ?
  • Authorization 認證報頭

  • Cache-Control 緩存報頭

  • Cnotent-Type 消息體類型報頭

  • ......

  • 報頭還有很多,不一一列舉。HTTP報頭是描述HTTP請求或響應的元數據,它的作用是客戶端 與 服務器端進行相互通信時,告訴對方應該如何處理本次請求。

    3、超媒體
    老實說,這個詞匯我到目前還有沒搞得全懂。那也說說自己的理解吧,不一定準確哦,有錯誤希望指出。
    ”超媒體“ 你沒聽說過沒關系,”超鏈接“ 你一定不會陌生。簡單來說,”超鏈接“ 是實現超媒體中的一種方式?!背襟w“希望達到一種就是說在 REST API 中把所有資源給鏈接起來。它就猶如你打開一個網站的首頁,你難道看到的只有首頁嗎?NO !, 不是的,你可以通過首頁查看商品、查看文章、查看論壇。”超媒體“ 就是做這個事情,它利用 API 把所有資源的關系給鏈接起來了,你看到不會只是一個獨立的資源,而是關系網中的一個資源。
    ”超媒體“ 有點高大上了,老實說,就算你夠牛X,寫出了一個非常棒的符合”超媒體“的REST API,你的用戶即開發者,也不一定能夠接受你這種高大上的設計。當然,我相信未來也許可以普及了。

    4、最后
    上面只是簡單說了一些自己最近做REST的一些體驗吧。有關于REST的介紹文章實在是太多了,當然很多寫得也非常不錯,我這里?aisuhua/restful-api-design-references · GitHub?收集了一些,喜歡的話可以看看,有更好的可以推薦給我。對于上面的回答,有任何不對,都希望您能指出,大家共同進步,謝謝大家!

    ?

    ?

    鏈接:https://www.zhihu.com/question/28557115/answer/47846156

    總結

    以上是生活随笔為你收集整理的RPC和REST区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。