一文搞懂RESTful開發

来源:https://www.cnblogs.com/XiaYu-Ye/p/18196674
-Advertisement-
Play Games

REST(Representational State Transfer),表現形式狀態轉換,它是一種軟體架構風格 當我們想表示一個網路資源的時候,可以使用兩種方式: 傳統風格資源描述形式 http://localhost/user/getById?id=1 查詢id為1的用戶信息 http://l ...


  • REST(Representational State Transfer),表現形式狀態轉換,它是一種軟體架構風格

    當我們想表示一個網路資源的時候,可以使用兩種方式:

    • 傳統風格資源描述形式

      • http://localhost/user/getById?id=1 查詢id為1的用戶信息

      • http://localhost/user/saveUser 保存用戶信息

    • REST風格描述形式

      • http://localhost/user/1

      • http://localhost/user

傳統方式一般是一個請求url對應一種操作,這樣做不僅麻煩,也不安全,因為會程式的人讀取了你的請求url地址,就大概知道該url實現的是一個什麼樣的操作。

查看REST風格的描述,你會發現請求地址變的簡單了,並且光看請求URL並不是很能猜出來該URL的具體功能

所以REST的優點有:

  • 隱藏資源的訪問行為,無法通過地址得知對資源是何種操作

  • 書寫簡化

但是我們的問題也隨之而來了,一個相同的url地址即可以是新增也可以是修改或者查詢,那麼到底我們該如何區分該請求到底是什麼操作呢?

  • 按照REST風格訪問資源時使用行為動作區分對資源進行了何種操作

    • http://localhost/users 查詢全部用戶信息 GET(查詢)

    • http://localhost/users/1 查詢指定用戶信息 GET(查詢)

    • http://localhost/users 添加用戶信息 POST(新增/保存)

    • http://localhost/users 修改用戶信息 PUT(修改/更新)

    • http://localhost/users/1 刪除用戶信息 DELETE(刪除)

請求的方式比較多,但是比較常用的就4種,分別是GET,POST,PUT,DELETE

按照不同的請求方式代表不同的操作類型。

  • 發送GET請求是用來做查詢

  • 發送POST請求是用來做新增

  • 發送PUT請求是用來做修改

  • 發送DELETE請求是用來做刪除

但是註意:

  • 上述行為是約定方式,約定不是規範,可以打破,所以稱REST風格,而不是REST規範

    • REST提供了對應的架構方式,按照這種架構設計項目可以降低開發的複雜性,提高系統的可伸縮性

    • REST中規定GET/POST/PUT/DELETE針對的是查詢/新增/修改/刪除,但是我們如果非要用GET請求做刪除,這點在程式上運行是可以實現的

    • 但是如果絕大多數人都遵循這種風格,你寫的代碼讓別人讀起來就有點莫名其妙了。

  • 描述模塊的名稱通常使用複數,也就是加s的格式描述,表示此類資源,而非單個資源,例如:users、books、accounts......

清楚了什麼是REST風格後,我們後期會經常提到一個概念叫RESTful,那什麼又是RESTful呢?

  • 根據REST風格對資源進行訪問稱為RESTful

後期我們在進行開發的過程中,大多是都是遵從REST風格來訪問我們的後臺服務,所以可以說咱們以後都是基於RESTful來進行開發的。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄VUE-局部使用快速入門常用指令v-forv-bindv-if & v-showv-onv-modelvue生命周期AxiosVue案例 VUE-局部使用 Vue 是一款用於構建用戶界面的漸進式的JavaScript框架。 (官方:https://cn.vuejs.org/) 快速入門 準備 準 ...
  • 前言 在上一篇 vue3早已具備拋棄虛擬DOM的能力了文章中講了對於動態節點,vue做的優化是將這些動態節點收集起來,然後當響應式變數修改後進行靶向更新。那麼vue對靜態節點有沒有做什麼優化呢?答案是:當然有,對於靜態節點會進行“靜態提升”。這篇文章我們來看看vue是如何進行靜態提升的。 什麼是靜態 ...
  • 一般我們在開發的時候,習慣上使用常規的關係型資料庫來設計資料庫表,對於一些業務表的欄位比較固定的場景,是一種非常不錯的選擇,而且查詢的時候,由於是基於固定的表欄位進行查詢,性能基本上是最優的。不過有一些場景下,業務信息的經常變化,使用常規的關係型資料庫來創建表欄位、刪除欄位的模式,肯定不是合適的處理... ...
  • 項目場景: 之前正式一直都是使用的手動註冊,而且測試環境還沒有註冊上去,但是最近開發的需要每天在測試上跑跑看,再上生產,所以這次要解決掉。 問題描述 我是測試環境和正式環境都在一臺機子上,兩個環境項目跑不同的docker容器,我要做的是這兩個容器裡面的項目都註冊到我的xxl服務上去。 而且之前情況是 ...
  • 1、先將字體複製到目錄:\vendor\mpdf\mpdf\ttfonts2、再修改文件\vendor\mpdf\mpdf\src\Config\FontVariables.php,對照已經添加的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字體 ...
  • nginx 反向代理是什麼? nginx 反向代理是一種網路伺服器架構模式,它通過將客戶端的請求轉發到後端伺服器,來提供負載均衡、高可用性、安全性等功能。 在這種架構中,nginx 作為反向代理伺服器,接收來自客戶端的請求,並將請求轉發到後端伺服器上。 在反向代理架構中,客戶端不直接訪問後端伺服器, ...
  • 請註意以下繼承體系中各class的constructors寫法: 1 class CPoint 2 { 3 public: 4 CPoint(float x=0.0) 5 :_x(x){} 6 7 float x() {return _x;} 8 void x(float xval){_x=xval ...
  • NumPy 分割數組 NumPy 提供了 np.array_split() 函數來分割數組,將一個數組拆分成多個較小的子數組。 基本用法 語法: np.array_split(array, indices_or_sections, axis=None) array: 要分割的 NumPy 數組。 i ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...