前后端對接

前端與后端的對接主要通過 接口 進行數據交互,具體流程和方式如下:


1. 明確需求與接口定義

  • 前后端協商:確定需要哪些接口、接口的功能、請求參數和返回格式。
  • 接口文檔:使用工具(如 Swagger、Postman、Apifox)編寫接口文檔,明確以下內容:
    • 請求方法(GET、POST、PUT、DELETE 等)
    • 請求 URL
    • 請求參數(Query、Body、Header 等)
    • 返回數據格式(通常是 JSON)
    • 錯誤碼和錯誤信息

2. 前后端開發

  • 前端:根據接口文檔,使用 HTTP 請求庫(如 fetchaxios)調用接口,獲取數據并渲染頁面。
  • 后端:根據接口文檔實現接口邏輯,處理數據并返回結果。

3. 接口調用方式

前端通過 HTTP 請求與后端交互,常見的請求方式包括:

(1)GET 請求(獲取數據)
  • 用于從后端獲取數據。
  • 示例:
    fetch('https://api.example.com/data?id=123').then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
    
(2)POST 請求(提交數據)
  • 用于向后端提交數據。
  • 示例:
    fetch('https://api.example.com/submit', {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ name: 'John', age: 30 })
    }).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
    
(3)PUT 請求(更新數據)
  • 用于更新后端的數據。
  • 示例:
    fetch('https://api.example.com/update/123', {method: 'PUT',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ name: 'Jane', age: 25 })
    }).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
    
(4)DELETE 請求(刪除數據)
  • 用于刪除后端的數據。
  • 示例:
    fetch('https://api.example.com/delete/123', {method: 'DELETE'
    }).then(response => response.json()).then(data => console.log(data)).catch(error => console.error('Error:', error));
    

4. 數據格式

  • 請求數據格式
    • application/json:JSON 格式(常用)。
    • multipart/form-data:文件上傳。
    • application/x-www-form-urlencoded:表單提交。
  • 返回數據格式
    • 通常是 JSON 格式,例如:
      {"code": 200,"message": "Success","data": {"id": 1,"name": "John"}
      }
      

5. 跨域問題

  • 問題:前端和后端在不同域名或端口時,瀏覽器會阻止跨域請求。
  • 解決方案
    • CORS:后端設置 Access-Control-Allow-Origin 頭部。
    • 代理服務器:前端通過代理服務器轉發請求(如使用 webpack-dev-server 或 Nginx)。
    • JSONP:僅適用于 GET 請求(不推薦)。

6. 認證與授權

  • JWT(JSON Web Token)
    • 用戶登錄后,后端返回一個 Token,前端將其存儲在本地(如 localStorage),并在每次請求時通過 Authorization 頭部發送。
    • 示例:
      fetch('https://api.example.com/protected', {method: 'GET',headers: { 'Authorization': 'Bearer ' + token }
      });
      
  • OAuth 2.0:適用于第三方登錄(如 Google、GitHub)。

7. 錯誤處理

  • HTTP 狀態碼
    • 200:請求成功。
    • 400:請求參數錯誤。
    • 401:未授權。
    • 404:資源未找到。
    • 500:服務器內部錯誤。
  • 自定義錯誤信息
    • 后端返回 JSON 格式的錯誤信息,例如:
      {"code": 400,"message": "Invalid input"
      }
      

8. 實時通信

  • WebSocket
    • 用于實時雙向通信(如聊天室、實時通知)。
    • 示例:
      const socket = new WebSocket('wss://api.example.com/socket');
      socket.onmessage = function(event) {console.log('Received:', event.data);
      };
      socket.send('Hello Server');
      

9. 文件上傳與下載

  • 文件上傳
    • 使用 multipart/form-data 格式上傳文件。
    • 示例:
      const formData = new FormData();
      formData.append('file', fileInput.files[0]);
      fetch('https://api.example.com/upload', {method: 'POST',body: formData
      });
      
  • 文件下載
    • 后端返回文件 URL,前端通過 <a> 標簽或編程方式下載。

10. 聯調與測試

  • 聯調:前后端開發完成后,進行接口聯調,確保數據交互正常。
  • 測試工具
    • Postman:手動測試接口。
    • Mock 數據:前端使用 Mock 數據模擬后端接口。
    • 自動化測試:使用 Jest、Cypress 等工具進行測試。

總結

前端與后端的對接主要依賴接口,通過 HTTP 請求(如 GET、POST)進行數據交互。關鍵點包括:

  1. 清晰的接口文檔。
  2. 統一的請求和返回格式(通常是 JSON)。
  3. 處理跨域、認證、錯誤等問題。
  4. 使用工具進行聯調和測試。

通過良好的協作和規范,可以確保前后端高效對接。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71737.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71737.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71737.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

簡識MQ之Kafka、ActiveMQ、RabbitMQ、RocketMQ傳遞機制

四種主流消息隊列&#xff08;Kafka、ActiveMQ、RabbitMQ、RocketMQ&#xff09;的生產者與消費者傳遞信息的機制說明&#xff0c;以及實際使用中的注意事項和示例&#xff1a; 1. Apache Kafka 傳遞機制 模型&#xff1a;基于 發布-訂閱模型&#xff0c;生產者向 主題&#…

Websocket——心跳檢測

1. 前言&#xff1a;為什么需要心跳機制&#xff1f; 在現代的實時網絡應用中&#xff0c;保持客戶端和服務端的連接穩定性是非常重要的。尤其是在長時間的網絡連接中&#xff0c;存在一些異常情況&#xff0c;導致服務端無法及時感知到客戶端的斷開&#xff0c;可能造成不必要…

tailwindcss 前端 css 框架 無需寫css 快速構建頁面

版本&#xff1a;VUE3 TS 框架 vite 文章中使用tailwindcss 版本&#xff1a; ^3.4.17 簡介&#xff1a; Tailwind CSS 一個CSS 框架&#xff0c;提供組件化的樣式&#xff0c;直接在HTML 中編寫樣式&#xff0c;無需額外自定義CSS &#xff0c;快速&#xff01; 簡潔&#…

MFC開發:如何創建第一個MFC應用程序

文章目錄 一、概述二、MFC 的主要組件三、創建一個MFC窗口四、控件綁定消息函數 一、概述 MFC 是微軟提供的一個 C 類庫&#xff0c;用于簡化 Windows 應用程序的開發。它封裝了 Windows API&#xff0c;提供面向對象的接口&#xff0c;幫助開發者更高效地創建圖形用戶界面&am…

【Git版本控制器】第四彈——分支管理,合并沖突,--no-ff,git stash

&#x1f381;個人主頁&#xff1a;我們的五年 &#x1f50d;系列專欄&#xff1a;Linux網絡編程 &#x1f337;追光的人&#xff0c;終會萬丈光芒 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 ? 相關筆記&#xff1a; https://blog.csdn.net/djd…

AI助力小微企業技術開發規范化管理 | 雜談

AI助力小微企業技術開發規范化管理 在小型技術研發企業中&#xff0c;人員配置緊張&#xff0c;往往一名員工需要承擔多項職務和任務。例如&#xff0c;后端程序開發人員可能同時要負責需求調研、數據庫設計、后端設計及開發&#xff0c;甚至在某些情況下還需兼任架構師的角色。…

SpringBoot+Vue+微信小程序的貓咖小程序平臺(程序+論文+講解+安裝+調試+售后)

感興趣的可以先收藏起來&#xff0c;還有大家在畢設選題&#xff0c;項目以及論文編寫等相關問題都可以給我留言咨詢&#xff0c;我會一一回復&#xff0c;希望幫助更多的人。 系統介紹 在當下這個高速發展的時代&#xff0c;網絡科技正以令人驚嘆的速度不斷迭代更新。從 5G …

DeepSeek提效實操革命,全場景應用指南 AI提示詞萬能公式四步法以及對話技巧

歡迎來到濤濤聊AI DeepSeek系列文章 三塊顯示器如何擺放效率最高&#xff0c;讓deepseek給深度思考下 阿里云免費試用 DeepSeek大模型。 限時送 100 萬 tokens&#xff0c;快來搶先免費體驗&#xff01;AI 助手不再出現系統繁忙阿里云免費試用 DeepSeek大模型。 限時送 100 萬 …

智慧教室與無紙化同屏技術方案探討與實現探究

引言 隨著教育信息化的不斷發展&#xff0c;智慧教室和無紙化同屏技術逐漸成為提升教學效率和質量的重要手段。大牛直播SDK憑借其強大的音視頻處理能力和豐富的功能特性&#xff0c;在智慧教室和無紙化同屏領域積累了眾多成功案例。本文將深入探討基于大牛直播SDK的智慧教室、…

Linux MySQL 8.0.29 忽略表名大小寫配置

Linux MySQL 8.0.29 忽略表名大小寫配置 問題背景解決方案遇到的問題&#xff1a; 問題背景 突然發現有個大寫的表報不存在。 在Windows上&#xff0c;MySQL是默認支持忽略大小寫的。 這個時候你要查詢一下是不是沒有配置&#xff1a; SHOW VARIABLES LIKE lower_case_table…

【藍橋杯單片機】第十三屆省賽第二場

一、真題 二、模塊構建 1.編寫初始化函數(init.c) void Cls_Peripheral(void); 關閉led led對應的鎖存器由Y4C控制關閉蜂鳴器和繼電器 2.編寫LED函數&#xff08;led.c&#xff09; void Led_Disp(unsigned char ucLed); 將ucLed取反的值賦給P0 開啟鎖存器 關閉鎖存…

【CMake 教程】常用函數與構建案例解析(三)

一、CMake 常用函數簡析 1. 條件判斷 if() / elseif() / else() 在 CMake 腳本中&#xff0c;條件判斷是控制邏輯的重要工具。if() 支持多種比較語句&#xff0c;包括數值、字符串、布爾值和變量存在性等。在條件滿足時執行特定邏輯代碼&#xff0c;下面是典型語法&#xff1…

ASP.NET Core 8.0學習筆記(二十七)——數據遷移:Migrations深入與其他遷移命令

一、數據庫架構的管理 1.EF Core提供兩種方式來保持EF Core的模型與數據庫保持同步。 (1)以數據庫為準&#xff1a;反向工程&#xff08;Db First&#xff09;&#xff0c;適用于中大型工程 (2)以代碼為準&#xff1a;數據遷移&#xff08;Code First&#xff09;&#xff0c;…

Python 基本語法的詳細解釋

目錄 &#xff08;1&#xff09;注釋 &#xff08;2&#xff09;縮進 &#xff08;3&#xff09;變量和數據類型 變量定義 數據類型 &#xff08;4&#xff09;輸入和輸出 輸出&#xff1a;print() 函數 輸入&#xff1a;input() 函數 &#xff08;1&#xff09;注釋 注…

20-R 繪圖 - 餅圖

R 繪圖 - 餅圖 R 語言提供來大量的庫來實現繪圖功能。 餅圖&#xff0c;或稱餅狀圖&#xff0c;是一個劃分為幾個扇形的圓形統計圖表&#xff0c;用于描述量、頻率或百分比之間的相對關系。 R 語言使用 pie() 函數來實現餅圖&#xff0c;語法格式如下&#xff1a; pie(x, l…

Ubuntu 22.04 一鍵部署MinerU1.1.0

MinerU MinerU是一款將PDF轉化為機器可讀格式的工具&#xff08;如markdown、json&#xff09;&#xff0c;可以很方便地抽取為任意格式。 MinerU誕生于書生-浦語的預訓練過程中&#xff0c;我們將會集中精力解決科技文獻中的符號轉化問題&#xff0c;希望在大模型時代為科技發…

紫光同創開發板使用教程(二):sbit文件下載

sbit文件相當于zynq里面的bit文件&#xff0c;紫光的fpga工程編譯完成后會自動生成sbit文件&#xff0c;因工程編譯比較簡單&#xff0c;這里不在講解工程編譯&#xff0c;所以我這里直接下載sbit文件。 1.工程編譯完成后&#xff0c;可以看到Flow列表里面沒有報錯&#xff0c…

DeepSeek 部署全指南:常見問題解析與最新技術實踐

引言 隨著開源大模型DeepSeek的爆火&#xff0c;其部署需求激增&#xff0c;但用戶在實際操作中常面臨服務器壓力、本地部署性能瓶頸、API配置復雜等問題。本文結合2025年最新技術動態&#xff0c;系統梳理DeepSeek部署的核心問題與解決方案&#xff0c;并分享行業實踐案例&am…

Vue02

Vue02 綁定class樣式 字符串寫法&#xff0c;適用于&#xff1a;樣式的類名不確定&#xff0c;需要動態指定 數組寫法&#xff0c;適用于&#xff1a;要綁定的樣式個數不確定&#xff0c;名字也不確定 對象寫法&#xff0c;適用于&#xff1a;要綁定的樣式個數缺點&#xff…

超導量子計算機的最新進展:走向實用化的量子革命

超導量子計算機的最新進展:走向實用化的量子革命 大家好,我是 Echo_Wish,今天我們來聊聊科技圈最炙手可熱的話題之一——超導量子計算機。近年來,量子計算領域可謂是風起云涌,而超導量子計算機作為主流路線之一,已經在學術界和工業界取得了不少突破性進展。 那么,超導…