全棧業務開發入門——登錄業務接口

業務已上傳則資源

實現登錄業務的前后端聯調,前端點擊登錄按鈕向后端發送一個請求,后端調用接口向前端響應結果

效果如下:

設計環境:springboot+mybatis+vue3+axios

一.前端設計

1.基于vue3腳手架創建項目,搭建項目結構

2.配置代理(處理跨域問題)

由于發起ajax請求的域為http://localhost:5173, 而后臺服務器的域為 http://localhost:8080, 所以瀏覽器會限制該請求的發送, 這種問題稱為跨域問題, 跨域問題可以在服務器端解決,也可以在瀏覽器端解決, 這可以通過配置代理的方式解決

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),],resolve: {alias: {'@': fileURLToPath(new URL('./src', import.meta.url))}},//配置代理server: {proxy: {'/api': {target: 'http://localhost:8080', // 后端服務器地址changeOrigin: true, // 是否改變請求域名rewrite: (path) => path.replace(/^\/api/, '')//將原有請求路徑中的api替換為''}}}
})

3.搭建登錄頁面組件

首先搭建頁面組件,將進行數據雙向綁定

import { ref } from 'vue'
const LogData = ref({username: '',password: ''
})

當點擊登錄按鈕時,就會調用login函數向后端發送請求

<div class="box"><form action="" :model="LogData">用戶名:<input type="text" v-model="LogData.username"><br><br>密碼:<input type="text" v-model="LogData.password"><br><br><button type="button" @click="login">登錄</button></form></div>
.box{width: 400px;height: 200px;background-image: url('@/assets/login_bg.jpg');text-align: center;margin: 50px auto;padding: 40px;
}

4.提供調用登錄接口的函數

首先根據axios提供共用的響應攔截器

//導入axios
import axios from 'axios';
const baseURL = '/api';
const instance = axios.create({baseURL})//添加響應攔截器
instance.interceptors.response.use(result=>{return result.data;},err=>{alert('服務異常');return Promise.reject(err);//異步的狀態轉化成失敗的狀態}
)export default instance;

然后提供調用登錄接口的函數

//導入request.js請求工具
import request from '@/utils/request.js'//提供調用登錄接口的函數
export const userLoginService = (loginData)=>{const params = new URLSearchParams();for(let key in loginData){params.append(key,loginData[key])}return request.post('/user/login',params)
}

最后寫出點擊登錄后的調用函數并完成響應

//調用后臺接口,完成登錄
import { userLoginService} from '@/api/user.js'
const login = async () => {let result = await userLoginService(LogData.value);if (result.code === 0) {//成功了alert(result.msg ? result.msg : '登錄成功');}else{//失敗了alert('登錄失敗')} 
}

二.后端設計

1.基于springboot創建項目,引入web,mybatis,lombok依賴,并進行數據庫連接信息和mybatis配置

2.創建數據庫表并寫出對應的實體類

數據庫tb_user表中只含有username和password兩列

3.搭建登錄接口

請求路徑為:https://localhost:8080/user/login

請求方式:POST

請求參數格式:x-www-form-urlencoded

請求數據樣例:

username=zhangsan&password=123456

首先controller層接受請求并響應

@Slf4j
@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;@PostMapping("/login")public Result<String> login(@RequestParam String username, @RequestParam String password){log.info("用戶登錄:{},{}",username,password);User user=new User(username,password);User u=userService.login(user);return u==null?Result.error("登錄失敗"):Result.success("登錄成功");}
}

然后service層進行業務處理

@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic User login(User user) {return userMapper.login(user);}
}

最后mapper層調用數據庫并返回結果

@Mapper
public interface UserMapper {@Select("select * from db01_ms.tb_user where username=#{username} and password=#{password}")public User login(User user);
}

三.前后端聯調

首先前端發送請求

然后后端調用接口,進行數據庫訪問

最后前端接收響應并進行反映

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

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

相關文章

LAZYNVIM學習使用筆記

文章目錄 1. 前言VIM的模式快捷鍵參考 1. 前言 習慣使用vscode進行代碼編輯&#xff0c;無意中刷到lazynvim&#xff0c;感覺功能強大&#xff0c;于是下載、安裝&#xff0c;學習使用一下&#xff0c;本篇主要記錄學習使用lazynvim的一些要點&#xff0c;防止遺忘。 持續更新…

帝特(DTECH)USB轉RS485/422串口線在Ubuntu系統中的安裝

因為測試需要&#xff0c;買了一根帝特&#xff08;DTECH&#xff09;USB轉RS485/422串口線&#xff0c;今天測試了一下在Ubuntu 22.04系統上的使用。帝特的網站上提供了驅動程序&#xff0c;下載以后發現接口芯片是CP2102&#xff0c;廠商只提供了Linux內核2.6和3.x版本的驅動…

1703:發現它,抓住它

網址如下&#xff1a; OpenJudge - 1703:發現它&#xff0c;抓住它 測&#xff0c;這題差點讓我去世 用了一堆方法來做 后面現學了并查集&#xff0c;用了并查集來做&#xff0c;因為縮短路徑的方法不好&#xff0c;還是超時了 后面換了一種縮短路徑的方法 先上代碼 解法一…

游戲AI的創造思路-技術基礎-情感計算(2)

上一篇我們介紹了情感計算的基本支持&#xff0c;本篇將呈現情感計算在游戲AI中的使用實例~~~ 目錄 7. 情感計算在游戲AI中的運用實例 7.1. RPG游戲中的運用實例 7.1.1. 實例背景 7.1.2. AI情感計算系統 7.1.3. 引導用戶執行任務 7.1.4. 推動游戲劇情發展 7.1.5. 實例效…

用Python玩轉Excel的五大功能!

在日常的數據處理工作中&#xff0c;Excel無疑是一個強大的工具。然而&#xff0c;當數據量較大或需要自動化處理時&#xff0c;Python憑借其強大的庫支持&#xff0c;如pandas和openpyxl&#xff0c;能夠更高效地處理Excel文件。 本文將介紹Python中常用的五種Excel操作**&am…

一個用于在虛擬桌面下跑chrome的docker鏡像

制作了一個用于跑chrome的docker鏡像xvfb-chrome&#xff0c;主要是為了支持能夠通過xvfb或者wayland&#xff0c;給chrome提供一個虛擬的桌面環境。 這個鏡像主要支持&#xff1a; 將chrome --remote-debugging-port映射到docker的host&#xff0c;可以在host直接訪問。支持…

Python辦公自動化:增值稅發票批量識別和核驗

騰訊云免費體驗地址: https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-11-19&Action=VatInvoiceVerifyNew 首先進行識別,這里以python為例子 # -*- coding: utf-8 -*- import jsonfrom tencentcloud.common.common_client import Commo…

【C++航海王:追尋羅杰的編程之路】關聯式容器的底層結構——紅黑樹

目錄 1 -> 紅黑樹 1.1 -> 紅黑樹的概念 1.2 -> 紅黑樹的性質 1.3 -> 紅黑樹節點的定義 1.4 -> 紅黑樹的結構 1.5 -> 紅黑樹的插入操作 1.6 -> 紅黑樹的驗證 1.8 -> 紅黑樹與AVL樹的比較 2 -> 紅黑樹模擬實現STL中的map與set 2.1 -> 紅…

如何理解李彥宏說的“不要卷模型,要卷應用?

背景&#xff1a; 7月4日&#xff0c;2024世界人工智能大會暨人工智能全球治理高級別會議全體會議在上海世博中心舉辦。在產業發展主論壇上&#xff0c;百度創始人、董事長兼首席執行官李彥宏呼吁&#xff1a;“大家不要卷模型&#xff0c;要卷應用&#xff01;”李彥宏認為&am…

【堆 優先隊列】1354. 多次求和構造目標數組

本文涉及知識點 堆 優先隊列 LeetCode1354. 多次求和構造目標數組 給你一個整數數組 target 。一開始&#xff0c;你有一個數組 A &#xff0c;它的所有元素均為 1 &#xff0c;你可以執行以下操作&#xff1a; 令 x 為你數組里所有元素的和 選擇滿足 0 < i < target.…

idea在選定范圍搜索

idea在選定范圍搜索 CtrlR 在IntelliJ IDEA中&#xff0c;?如果你想在選定的范圍內搜索關鍵字&#xff0c;?可以按照以下步驟操作&#xff1a;? 首先&#xff0c;?使用鼠標選中你要搜索關鍵字的一個范圍。? 然后&#xff0c;?使用快捷鍵CtrlR&#xff08;?替換元素&am…

掌握JsonConvert.SerializeObject:美化輸出與序列化對象的藝術

目錄 引言 JsonConvert.SerializeObject簡介 參數詳解 使用示例 運行結果 結論 結語 引言 在現代軟件開發中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;是一種輕量級的數據交換格式&#xff0c;被廣泛用于Web API、數據庫存儲以及跨平臺數據傳…

linux信息收集與提權

目錄 版本信息收集 kali得一些exp網站 kali自帶的searchsploit工具 臟牛提權漏洞&#xff08;改寫沒有寫權限的文件&#xff09; 測試靶場下載鏈接 sudo提權 上傳惡意C腳本進行編譯生成dirty的elf文件&#xff0c;也可以在攻擊機編譯好上傳 啟動&#xff0c;123456是設…

體驗完這款售價29999元起蘋果新品,我大受震撼

講道理&#xff0c;數碼圈已經很久沒有出現過讓人耳目一新的產品了。 整個圈子近些年各家新品邏輯給我的一種感覺是普遍主打循規循距&#xff0c;用高情商話來說那叫穩扎穩打不易出錯&#xff0c;而低情商嘛&#xff0c;說白了叫創新精神嚴重缺失。 「科技最后以換皮為準」這…

C語言學習 關于short和int

&#x1f308; 關于今天的這一part 簡單說說關于C中的short 和 int 主要是復盤C語言時候的一個小小的回顧把~&#xff08;內容來自C Primer Plus 第六版&#xff09; &#x1f433;主要是討論一下兩個東西 1?? 在給函數傳遞參數時&#xff0c;C編譯器把short類型的值自動轉換…

【CUDA】 Trust基本特性介紹及性能分析

Trust簡介 Thrust 是一個實現了眾多基本并行算法的 C 模板庫,類似于 C 的標準模板庫(standard template library, STL)。該庫自動包含在 CUDA 工具箱中。這是一個模板庫,僅僅由一些頭文件組成。在使用該庫的某個功能時,包含需要的頭文件即可。該庫中的所有類型與函數都在命名空…

【linux】 sudo apt update報錯——‘由于沒有公鑰,無法驗證下列簽名: NO_PUBKEY 3B4FE6ACC0B21F32’

【linux】 sudo apt update報錯——‘由于沒有公鑰&#xff0c;無法驗證下列簽名&#xff1a; NO_PUBKEY 3B4FE6ACC0B21F32’ 在運行sudo apt update時遇到報錯&#xff0c;由于沒有公鑰&#xff0c;無法驗證下列簽名&#xff1a; NO_PUBKEY 3B4FE6ACC0B21F32 解決方法&#x…

C++八股(五)之Linux常用命令

目錄 一、Linux常用命令有哪些? 二、Linux中查看進程運行狀態的指令、tar解壓文件的參數。??? 三、如何創建一個新的目錄??? 四、說說如何以root權限運行某個程序。? 五、linux里如何查看一個想知道的進程?? 六、Linux里如何查看帶有關鍵字的日志文件?? 七、…

Qt:11.輸入類控件(QLineEdit-單行文本輸入控件、QTextEdit-多行文本輸入控件、QComboBox-下拉列表的控件)

一、QLineEdit-單行文本輸入控件&#xff1a; 1.1QLineEdit介紹&#xff1a; QLineEdit 是 Qt 庫中的一個單行文本輸入控件&#xff0c;不能換行。允許用戶輸入和編輯單行文本。 1.2屬性介紹&#xff1a; inputMask 設置輸入掩碼&#xff0c;以限定輸入格式。setInputMask(con…

react學習——25redux實現求和案例(完整版)

1、目錄結構 2、count/index.js import React, {Component} from "react"; //引入store,用于獲取數據 import store from ../../redux/store //引入actionCreator 專門創建action對象 import {createDecrementAction,createIncrementAction} from ../../redux/coun…