最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Vue與Spring?Boot前后端是怎么對接起來的

 更新時(shí)間:2025年06月19日 09:41:43   作者:snowfoootball  
這篇文章主要介紹了Vue與Spring?Boot前后端是怎么對接起來的相關(guān)資料,通過Vue與SpringBoot案例演示Axios調(diào)用接口,強(qiáng)調(diào)職責(zé)分離與工程結(jié)構(gòu),需要的朋友可以參考下

前言

很多剛學(xué)習(xí)前端(HTML/CSS/JS/Vue)或者后端(Java/Spring Boot)的朋友,都會(huì)遇到一個(gè)共通的困惑:

“我能寫頁面,也能寫接口,但它們怎么連起來的?”

本篇文章就為你解鎖介紹這個(gè)最基礎(chǔ)的知識(shí)點(diǎn),從前后端分離的思想入門,到Vue 使用 Axios 調(diào)用 Spring Boot 接口的案例,一步步帶你搞定。

一、什么是前后端分離?

1. 傳統(tǒng)開發(fā)模式:頁面與接口混在一起

在早期的 Web 應(yīng)用開發(fā)中,前端頁面和后端邏輯常常緊密耦合在一起。例如,一個(gè) Java Web 項(xiàng)目往往采用 JSP 頁面 + Servlet 或 Spring MVC Controller 的模式。用戶請求一個(gè)頁面,服務(wù)器會(huì)在后端拼接 HTML 并將整頁內(nèi)容返回給瀏覽器。

這種模式的特點(diǎn)是:

  • 頁面渲染在服務(wù)端完成,前端只負(fù)責(zé)展示結(jié)果;
  • 前端和后端代碼耦合嚴(yán)重,一處改動(dòng)往往需要同時(shí)修改后端 JSP 文件與 Controller 邏輯;
  • 開發(fā)效率受限,前端無法獨(dú)立開發(fā)或測試功能,后端壓力較大;
  • 不利于適配現(xiàn)代多端設(shè)備(PC、移動(dòng)、App)。

2. 前后端分離模式:各司其職、職責(zé)清晰

隨著前端技術(shù)的發(fā)展,特別是 Vue、React、Angular 等現(xiàn)代前端框架的流行,前后端分離逐漸成為主流架構(gòu)模式。

前后端分離指的是:

前端和后端分為兩個(gè)獨(dú)立的項(xiàng)目,分別負(fù)責(zé)不同的職責(zé),通過接口(API)進(jìn)行通信。

前端職責(zé):

  • 使用 Vue / React / 原生 HTML+CSS+JS 等構(gòu)建用戶界面;
  • 負(fù)責(zé)頁面渲染、交互邏輯(如按鈕點(diǎn)擊、表單輸入);
  • 通過 Ajax、Axios 等工具調(diào)用后端接口,動(dòng)態(tài)獲取或提交數(shù)據(jù)。

后端職責(zé):

  • 使用 Spring Boot / Node.js / Python 等語言框架處理業(yè)務(wù)邏輯;
  • 與數(shù)據(jù)庫交互,完成增刪改查;
  • 向前端提供標(biāo)準(zhǔn)的 HTTP 接口(通常返回 JSON 數(shù)據(jù))。

通信方式:

  • 通常采用 HTTP 協(xié)議 + JSON 數(shù)據(jù)格式;
  • 前端通過調(diào)用 RESTful 接口(如 /api/user/list?)獲取或操作數(shù)據(jù);
  • 也可以使用 WebSocket 實(shí)現(xiàn)實(shí)時(shí)通信。

3. 前后端分離的優(yōu)點(diǎn):

優(yōu)點(diǎn)說明
代碼職責(zé)清晰前后端各自專注領(lǐng)域,分工明確,減少相互干擾
便于團(tuán)隊(duì)協(xié)作前端和后端可以并行開發(fā),提高效率
更易于測試與部署接口可獨(dú)立測試,部署時(shí)前后端可以分別上線
更適配現(xiàn)代應(yīng)用需求支持 SPA(單頁應(yīng)用)、PWA、移動(dòng)端、小程序等多種終端
更靈活的技術(shù)選型前后端可使用不同技術(shù)棧,如 Vue + Spring Boot 或 React + Node.js
更好的用戶體驗(yàn)頁面加載更快、響應(yīng)更靈活,可實(shí)現(xiàn)局部刷新與動(dòng)態(tài)更新

二、前后端工程結(jié)構(gòu)與開發(fā)流程

在前后端分離的開發(fā)模式中,前后端分別作為兩個(gè)獨(dú)立項(xiàng)目進(jìn)行開發(fā)和部署。下面是一個(gè)典型的工程結(jié)構(gòu):

?? vue-front         # 前端項(xiàng)目,使用 Vue3 + Vite 開發(fā),獨(dú)立啟動(dòng)
?? springboot-back   # 后端項(xiàng)目,使用 Spring Boot 開發(fā),提供 RESTful 接口

2.1 開發(fā)流程簡述:

  • 后端先行:定義接口

    • 例如:GET /api/users/{id}?,返回指定用戶的信息,數(shù)據(jù)格式為 JSON。
  • 前端對接:使用 Axios 請求接口

    • 獲取數(shù)據(jù)并渲染到頁面中。
  • 前后協(xié)作:依賴接口文檔

    • 接口文檔可以手動(dòng)編寫,也可以通過 Swagger 等工具自動(dòng)生成,便于雙方協(xié)作。

在編寫好了后端部分的程序后,我們通常提供一個(gè)后端接口 Spring Boot API,那么核心操作就是獲取后端接口提供的數(shù)據(jù)然后渲染在前端

上,這一部分我們主要通過Axios來完成。

2.2 什么是axios?

Axios 是一個(gè)基于 Promise 的 HTTP 客戶端,運(yùn)行在瀏覽器和 Node.js 中,用于發(fā)送網(wǎng)絡(luò)請求(比如 GET、POST 等),常用于前端項(xiàng)目中向后端接口獲取或提交數(shù)據(jù)。

簡單來說:

Vue/React 項(xiàng)目中,你想調(diào)用后端的接口?就用 Axios!

Axios 的優(yōu)勢

為什么不用原生 fetch?,而要用 Axios 呢?看看 Axios 的好處:

優(yōu)勢說明
簡單語法fetch?寫法更直觀,不需要額外.json()?
請求攔截/響應(yīng)攔截可統(tǒng)一加 Token、統(tǒng)一處理錯(cuò)誤
自動(dòng)轉(zhuǎn)換 JSON請求參數(shù)和響應(yīng)結(jié)果都自動(dòng)處理 JSON
支持超時(shí)、取消請求網(wǎng)絡(luò)不穩(wěn)定時(shí)很有用
支持并發(fā)請求可同時(shí)發(fā)送多個(gè)請求,如axios.all?
瀏覽器兼容性好比 fetch 更廣泛支持老版本瀏覽器

Axios 安裝與基本用法

安裝

npm install axios

導(dǎo)入使用

import axios from 'axios'

基礎(chǔ)請求示例

1. GET 請求(獲取數(shù)據(jù))

axios.get('/api/users/1')
  .then(res => {
    console.log(res.data) // 拿到后端返回的數(shù)據(jù)
  })
  .catch(err => {
    console.error('請求失敗', err)
  })

2. POST 請求(提交數(shù)據(jù))

axios.post('/api/users', {
  name: '小紅',
  email: 'hong@example.com'
})

3. PUT 請求(更新數(shù)據(jù))

axios.put('/api/users/1', {
  name: '新名字'
})

4. DELETE 請求(刪除數(shù)據(jù))

axios.delete('/api/users/1')

但是注意,我們不推薦在組件中直接寫 axios.get(...)?,而是在一個(gè)單獨(dú)的文件中封裝接口邏輯,便于統(tǒng)一維護(hù)、修改和復(fù)用。以一個(gè)用戶接口為例子。

封裝 Axios 請求(services/user.js)

// ?? src/services/user.js
import axios from 'axios'

// 后端接口基礎(chǔ)地址
const base = 'http://localhost:8080/api/users'

// 獲取指定用戶
export function getUser(id) {
  return axios.get(`${base}/${id}`)
}

注意:這里的 base? 就是你提到的“后端接口地址”的來源!我們用字符串拼接的方式,把用戶 ID 加到 URL 上,形成完整請求地址。

在組件中調(diào)用(UserInfo.vue)

<script setup>
import { ref, onMounted } from 'vue'
import { getUser } from '../services/user.js'

// 用 ref 創(chuàng)建響應(yīng)式用戶對象
const user = ref({})

// 頁面加載時(shí)請求后端接口
onMounted(async () => {
  const res = await getUser(1) // 發(fā)起 HTTP 請求,參數(shù) 1 是用戶 ID
  user.value = res.data // 響應(yīng)結(jié)果賦值給 user
})
</script>

<template>
  <div v-if="user.name">
    <h2>用戶名:{{ user.name }}</h2>
    <p>郵箱:{{ user.email }}</p>
  </div>
</template>

三. 額外的…

全局?jǐn)r截器(加 Token)

在登錄系統(tǒng)中,很多請求需要攜帶用戶的身份憑證(Token)。你可以配置一個(gè)請求攔截器,自動(dòng)給所有請求加上 Token:

// 在 main.js 或 http.js 中統(tǒng)一配置
axios.interceptors.request.use(config => {
  const token = localStorage.getItem('token') // 從本地獲取 Token
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

可選優(yōu)化:使用 Vite 代理簡化請求地址

你可能注意到請求地址寫成 http://localhost:8080/...? 很不優(yōu)雅。如果你在 vite.config.js? 中加了代理:

// vite.config.js
export default {
  server: {
    proxy: {
      '/api': {
        target: 'http://localhost:8080',
        changeOrigin: true
      }
    }
  }
}

那么在封裝 Axios 時(shí)可以把 base 改為:

const base = '/api/users'

這樣你寫 axios.get('/api/users/1')?,其實(shí)內(nèi)部就會(huì)代理成 http://localhost:8080/api/users/1?,前端代碼更簡潔,跨域問題也解決了。

總結(jié)

到此這篇關(guān)于詳解Vue與Spring Boot前后端是怎么對接起來的文章就介紹到這了,更多相關(guān)Vue與SpringBoot前后端對接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼

    Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java IO文件編碼轉(zhuǎn)換實(shí)現(xiàn)代碼,有需要的朋友可以參考一下
    2013-12-12
  • springboot加載json配置全過程

    springboot加載json配置全過程

    Spring Boot加載JSON配置的步驟:實(shí)現(xiàn)PropertySourceLoader接口,創(chuàng)建spring.factories文件,并在resources下添加application.json,通過指定spring.profiles.active屬性來激活配置文件
    2025-12-12
  • springboot如何讀取sftp的文件

    springboot如何讀取sftp的文件

    這篇文章主要介紹了springboot如何讀取sftp的文件,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • ApplicationRunner、InitializingBean、@PostConstruct執(zhí)行順序解讀

    ApplicationRunner、InitializingBean、@PostConstruct執(zhí)行順序解讀

    Spring Boot提供CommandLineRunner與ApplicationRunner接口,用于啟動(dòng)時(shí)執(zhí)行初始化任務(wù),前者接收原始參數(shù)數(shù)組,后者封裝為ApplicationArguments對象,兩者執(zhí)行順序可通過@Order控制
    2025-09-09
  • Java中invokedynamic字節(jié)碼指令問題

    Java中invokedynamic字節(jié)碼指令問題

    這篇文章主要介紹了Java中invokedynamic字節(jié)碼指令問題,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • Eclipse 安裝 SVN 在線插件教程

    Eclipse 安裝 SVN 在線插件教程

    這篇文章主要介紹了Eclipse 安裝 SVN 在線插件教程的相關(guān)資料,這里對安裝步驟進(jìn)行了詳細(xì)介紹,需要的朋友可以參考下
    2016-11-11
  • JAVA使用ffmepg處理視頻的方法(壓縮,分片,合并)

    JAVA使用ffmepg處理視頻的方法(壓縮,分片,合并)

    這篇文章主要介紹了JAVA使用ffmepg處理視頻的方法,包括視頻壓縮分片合并功能,通過實(shí)例代碼講解的很詳細(xì),對java ffmepg處理視頻相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-05-05
  • SpringBoot服務(wù)開啟后通過端口訪問無反應(yīng)的解決

    SpringBoot服務(wù)開啟后通過端口訪問無反應(yīng)的解決

    這篇文章主要介紹了SpringBoot服務(wù)開啟后通過端口訪問無反應(yīng)的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • java并發(fā)編程死鎖定義及如何避免死鎖

    java并發(fā)編程死鎖定義及如何避免死鎖

    這篇文章主要為大家介紹了java并發(fā)編程中死鎖的詳細(xì)說明及如何避免死鎖的方法,有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • java程序中指定某個(gè)瀏覽器打開的實(shí)現(xiàn)方法

    java程序中指定某個(gè)瀏覽器打開的實(shí)現(xiàn)方法

    最近工作中遇到一個(gè)需求,是要利用java打開指定瀏覽器,整理后發(fā)現(xiàn)有四種解決的方法,所以想著分享出來,下面這篇文章主要給大家介紹了java程序中指定某個(gè)瀏覽器打開的實(shí)現(xiàn)方法,,需要的朋友可以參考下。
    2017-03-03

最新評論

盘山县| 梁平县| 曲阜市| 阜新市| 泗水县| 微山县| 庄河市| 格尔木市| 平乡县| 青龙| 息烽县| 蕉岭县| 江陵县| 赣榆县| 芮城县| 绥德县| 霞浦县| 黄山市| 大埔区| 佛冈县| 喀喇沁旗| 临泽县| 耒阳市| 五原县| 米易县| 和林格尔县| 德昌县| 长海县| 博罗县| 天镇县| 酒泉市| 江都市| 织金县| 分宜县| 彝良县| 景德镇市| 沙河市| 玉山县| 铜梁县| 大厂| 东丰县|