Fastapi前端搭建
1. 配置import { defineConfig } from vite import vue from vitejs/plugin-vue import { resolve } from path export default defineConfig({ plugins: [vue()], resolve: { alias: { : resolve(__dirname, src) } }, server: { proxy: { /api: { target: http://127.0.0.1:8000, changeOrigin: true, } } } })Vue 前端配置在/api路徑下配置代理將請求轉發(fā)到后端地址 http://127.0.0.1:8000/api/changeOrigin: true修改請求頭中的Origin為目標地址避免后端因 Origin 校驗拒絕請求。2. 接口格式// 加載圖書列表 1. 在掛載時加載 // const loadBook () { // axios.get(/api/book/?page${query.value.page}page_size${query.value.page_size}) // .then(res { // console.log(后端返回, res.data) // tableData.value res.data.data // totalNum.value res.data.count_total // }) // .catch(err console.error(err)) // }1. 方法一axios.get(調(diào)用路徑/?分頁參數(shù) 查詢條件).then請求成功后觸發(fā).then中的回調(diào)函數(shù)。.catch請求失敗后觸發(fā)。相當于一個 if-else 判斷如果成功執(zhí)行成功邏輯如果失敗則提示錯誤。2. 方法二// 加載圖書列表 2. 在事件中加載 const loadBook () { axios.get(/api/book/, {params: query.value}) .then(res { console.log(res.data) tableData.value res.data.data totalNum.value res.data.count_total }) .catch(err console.error(err)) }在事件中加載時將參數(shù)放在請求體{params: query.value}中params中傳遞數(shù)據(jù)不在路由中傳遞。3. 添加、編輯接口!-- 新增、編輯共用彈窗 -- el-dialog v-modeldialogVisible title圖書表單 width520px el-form label-width90px el-form-item label書名 el-input v-modelform.name/el-input /el-form-item el-form-item label價格 el-input v-model.numberform.price/el-input /el-form-item el-form-item label庫存數(shù)量 el-input v-model.numberform.numbers/el-input /el-form-item !-- 分類下拉選擇 -- el-form-item label分類 el-select v-modelform.category_id placeholder請選擇分類 stylewidth: 100% el-option label文學小說 value1 / el-option label計算機編程 value2 / el-option label歷史人文 value3 / el-option label心理學 value4 / el-option label美食菜譜 value5 / /el-select /el-form-item /el-form template #footer el-button clickdialogVisible false取消/el-button el-button typeprimary clicksubmitForm確定提交/el-button /template /el-dialog組件定義彈窗變量dialogVisible false默認未打開點擊后打開并顯示數(shù)據(jù)綁定form中的空數(shù)據(jù)。如果輸入數(shù)據(jù)就將輸入的數(shù)據(jù)放到form中對應的字段中。添加接口、編輯接口const submitForm () { if (operateMode.value add) { // 新增 axios.post(/api/book/, form.value) .then(() { ElMessage.success(新增成功) dialogVisible.value false loadBook() }) .catch(err { ElMessage.error(新增失敗) console.error(err) }) } else { // 編輯 axios.put(/api/book/${editBookId.value}, form.value) .then(() { ElMessage.success(修改成功) dialogVisible.value false loadBook() }) .catch(err { ElMessage.error(修改失敗) console.error(err) }) } }因為編輯和添加功能在一起需要先判斷當前窗口是添加還是編輯然后調(diào)用對應的接口。將請求體發(fā)送到后端form中是添加的數(shù)據(jù)傳到后端后添加到 MySQL 數(shù)據(jù)庫中。添加或編輯成功后將dialogVisible.value false關閉窗口。修改時只傳遞修改后的數(shù)據(jù)然后傳到后端接口進行修改。

相關新聞

STM32與A5000安全芯片的物聯(lián)網(wǎng)設備開發(fā)實踐

STM32與A5000安全芯片的物聯(lián)網(wǎng)設備開發(fā)實踐

1. 硬件選型與安全架構設計在物聯(lián)網(wǎng)設備開發(fā)中,選擇STM32F100ZE作為主控芯片搭配A5000安全芯片的方案,主要基于以下考量:STM32F100ZE作為Cortex-M3內(nèi)核微控制器,具有以下關鍵特性:72MHz主頻和16KB SRAM,滿足…

2026/7/29 5:16:04 閱讀更多
文字識別后排版混亂,掃描版PDF應該怎么翻譯?

文字識別后排版混亂,掃描版PDF應該怎么翻譯?

文字識別后排版混亂,掃描版PDF應該怎么翻譯? 掃描版 PDF 的翻譯卡點不在"能不能識別文字",而在"識別完之后排版還能不能看"。不少 OCR 工具能把圖片里的文字轉成文本,但轉完之后段落順序錯亂、雙欄被拆成單行…

2026/7/29 5:16:04 閱讀更多
在行空板上部署MediaPipe實現(xiàn)實時人像分割與摳圖

在行空板上部署MediaPipe實現(xiàn)實時人像分割與摳圖

1. 項目緣起:為什么要在行空板上折騰MediaPipe摳圖? 最近在做一個智能交互展項,需要在資源受限的嵌入式設備上實時處理攝像頭畫面,把人物從背景里干凈地“摳”出來。一開始想到的是上云或者用高性能工控機跑OpenCVDeeplabv3&#…

2026/7/29 15:07:17 閱讀更多
數(shù)字生命技能工具:動態(tài)流程引擎與協(xié)作效率提升

數(shù)字生命技能工具:動態(tài)流程引擎與協(xié)作效率提升

1. 數(shù)字生命技能工具的核心價值解析在2023年Q3的團隊效率調(diào)研報告中,一個令人震驚的數(shù)據(jù)浮現(xiàn):知識工作者平均每天要花費2.1小時在重復性的流程溝通上。這正是我們團隊開發(fā)數(shù)字生命技能工具的初衷——將那些"只存在于老員工腦子里"的協(xié)作經(jīng)驗轉…

2026/7/29 15:07:17 閱讀更多
COMSOL納米孔陣列超表面透射譜仿真技巧與優(yōu)化

COMSOL納米孔陣列超表面透射譜仿真技巧與優(yōu)化

1. 項目概述:納米孔陣列超表面透射譜仿真 第一次在COMSOL中嘗試仿真納米孔陣列超表面時,我遇到了一個有趣的現(xiàn)象:理論上應該出現(xiàn)明顯透射峰的位置,仿真結果卻顯示為平坦的直線。這個問題困擾了我整整三天,直到發(fā)現(xiàn)是網(wǎng)…

2026/7/29 15:07:17 閱讀更多
從C語言文件管理系統(tǒng)到Linux裝NAS:開發(fā)者的自建存儲之路

從C語言文件管理系統(tǒng)到Linux裝NAS:開發(fā)者的自建存儲之路

開發(fā)者論壇里的一次討論 “用易語言寫個內(nèi)網(wǎng)穿透軟件難不難?”這是某開發(fā)者社區(qū)里一個常見問題?;卮饏^(qū)里的思路大致分兩派:一派認為易語言上手快,做個簡單的端口映射工具并不復雜;另一派則提醒,穩(wěn)定的內(nèi)網(wǎng)穿透涉及NAT…

2026/7/29 14:57:16 閱讀更多