Vue開發實例(七)Axios的安裝與使用

說明:

  1. 如果只是在前端,axios常常需要結合mockjs使用,如果是前后端分離,就需要調用對應的接口,獲取參數,傳遞參數;
  2. 由于此文章只涉及前端,所以我們需要結合mockjs使用;
  3. 由于為了方便實現效果,在這篇文章里面使用的是一級菜單,對應的代碼是:【Vue開發實例(六)實現左側菜單導航 —>>> 動態實現一級菜單】中的代碼
    在這里插入圖片描述

axios和mockjs的安裝與使用

  • 一、Axios
    • 1、安裝axios
    • 2、安裝mockjs
  • 二、數據請求
    • 1、get請求
    • 2、post請求
    • 3、添加數據
    • 4、修改
    • 5、刪除
    • 6、查詢
      • (1)無參查詢
      • (2)有參查詢

一、Axios

Axios 是一個基于 promise 的 HTTP 庫,類似于我們常用的 ajax。
在開發過程中,特別是前后端分離的項目,比如前端用Axios、ajax請求后端數據,后端也許當前只給了接口文檔,還沒有數據的返回,導致前端無法進行測試、調試,現在可以使用mock.js攔截前端ajax請求,更加方便的構造你需要的數據,大大提高前端的開發效率。

1、安裝axios

npm install axios --save

在main.js全局引入axios

import axios from 'axios';
Vue.prototype.$axios =axios;

2、安裝mockjs

npm install mockjs --save-dev

在src下創建文件夾mock,并創建index.js文件,輸入以下測試內容:

//引入mockjs
import Mock from 'mockjs'//使用mockjs模擬數據
Mock.mock('/test', {"res": 0,"data":{"datatime": "@datetime",//隨機生成日期時間"weekday|1-7": 7,//隨機生成1-7的數字"name": "@cname",//隨機生成中文名字}
});

main.js引入此mock.js就可以進行全局攔截axios和ajax的請求了。

import './mock/index.js';

二、數據請求

1、get請求

在之前的Main1頁面上編寫代碼
創建按鈕

 <el-button @click="getTest">get數據</el-button>

創建axios請求方法

<script>
export default {name: "Main1",methods: {getTest() {this.$axios.get("/test").then((res) => {console.log(res.data);});},},
};
</script>

this.$axios.get(“/test”)this.$axios.get 表示使用get請求,“/test” 訪問路徑,剛好與之前mock.js定義的想吻合;
res 就是取得返回的數據集合,其中res.data就是我們定義好的返回數據。

瀏覽器中“右鍵-檢查”或“F12”
在這里插入圖片描述

2、post請求

添加post請求按鈕

 <el-button @click="postTest">post測試1</el-button>

編寫js post代碼

postTest(){this.$axios.post("/post/test1",{id:1}).then(res=>{console.log(res.data)})
}

mock/index.js其中第2個參數指定為 post,如果我們用get請求則會提示404,只能用post

Mock.mock('/post/test1', 'post', function (param) {console.log('傳入的參數為:', param.body)return {res: 1,msg: "success"}
});

效果展示
在這里插入圖片描述

3、添加數據

按鈕代碼

<el-button @click="postAdd">add數據</el-button>

請求方法代碼

postAdd(){this.$axios.post("/post/add",{id:1,name:'哈哈'}).then(res=>{console.log(res.data)})
}

Mockjs數據

// 定義userList數組
let userList = [];
Mock.mock('/post/add', 'post', function (param) {let body = JSON.parse(param.body) // 獲取請求參數let id = parseInt(body.id)let flag = truefor (let item of userList) {if (item.id === id) flag = false // 判斷id是否已經存在}// 如果id不存在if (flag) {userList.push({name: body.name,id})return {userList,res: 0,msg: '添加成功'}} else {return {userList,res: 1,msg: '添加失敗'}}
});

效果展示

第一次發送請求,因為里面沒有id為1的數據,所以添加成功
第二次發送請求,因為id=1的數據已經添加成功了,所以失敗

在這里插入圖片描述
重新換一個id就可以添加成功
在這里插入圖片描述

4、修改

按鈕代碼

<el-button @click="postMod">mod數據</el-button>

請求代碼

postMod(){this.$axios.post("/post/mod",{name:'哈哈',id:3}).then(res=>{console.log(res.data)})
}

mockjs數據

Mock.mock('/post/mod', 'post', function (param) {let body = JSON.parse(param.body) // 獲取請求參數let id = parseInt(body.id)let flag = false, index = 0;for (let i in userList) {if (userList[i].id === id) {flag = true // 判斷id是否已經存在,存在返回trueindex = i//對應數組的下標}}// 如果id存在則修改if (flag) {userList[index] = bodyreturn {userList,res: 0,msg: '修改成功'}} else {return {userList,res: 1,msg: '修改失敗'}}
});

效果展示

因為第一次修改里面沒有數據,所以修改失敗
在這里插入圖片描述

先點擊 添加add,再點擊 修改mod
在這里插入圖片描述

5、刪除

按鈕代碼

<el-button @click="postDel">del數據</el-button>

請求代碼

postDel() {this.$axios.post("/post/del", { id: 1 }).then((res) => {console.log(res.data);});},

mockjs數據

Mock.mock('/post/del', 'post', function (param) {let body = JSON.parse(param.body) // 獲取請求參數let id = parseInt(body.id)let flag = false, index = 0;for (let i in userList) {if (userList[i].id === id) {flag = true // 判斷id是否已經存在,存在返回trueindex = i//對應數組的下標}}// 如果id存在則刪除if (flag) {userList.splice(index, 1);return {userList,res: 0,msg: '刪除成功'}} else {return {userList,res: 1,msg: '刪除失敗'}}
});

效果展示

先添加數據,再刪除數據

在這里插入圖片描述

6、查詢

按鈕代碼

<el-button @click="postQuery">query無參數據</el-button><br /><br />
<el-button @click="postQuery2">query有參數據</el-button><br /><br />

請求代碼,分別是沒有參數的查詢全部,有id參數的根據id來查詢

(1)無參查詢

postQuery(){this.$axios.post("/post/query",{}).then(res=>{console.log(res.data)})
}

(2)有參查詢

postQuery2(){this.$axios.post("/post/query",{id:1}).then(res=>{console.log(res.data)})
}

mockjs數據

Mock.mock('/post/query', 'post', function (param) {let body = JSON.parse(param.body) // 獲取請求參數let id = parseInt(body.id)if (!id) {//如果id不存在,則直接返回全部return {userList,res: 0,msg: '查詢成功'}}//idfor (let item of userList) {if (item.id === id) {return {userList: [item],res: 0,msg: '查詢成功'}}}// 如果id不存在則返回失敗return {userList: [],res: 1,msg: '查詢失敗'}
});

效果展示

按照圖示步驟執行

  1. 首先進行無參查詢,查詢全部,返回是空
  2. 其次是添加一條數據
  3. 接著帶參查詢id=1的數據

在這里插入圖片描述

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

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

相關文章

《熱辣滾燙》:用堅持不懈開啟逆境中的職場出路

"你只活一次&#xff0c;所以被嘲笑也沒有關系&#xff0c;想哭也沒有關系&#xff0c;失敗更沒有關系。" “人生就像一場拳擊賽&#xff0c;你站不起來&#xff0c;就永遠不知道自己有多強” “命運只負責洗牌&#xff0c;出牌的永遠是自己。” 在今年的賀歲檔電影市…

云時代【6】—— 鏡像 與 容器

云時代【6】—— 鏡像 與 容器 四、Docker&#xff08;三&#xff09;鏡像 與 容器1. 鏡像&#xff08;1&#xff09;定義&#xff08;2&#xff09;相關指令&#xff08;3&#xff09;實戰演習鏡像容器基本操作離線遷移鏡像鏡像的壓縮與共享 2. 容器&#xff08;1&#xff09;…

為什么模電這么難學?這是我見過最好的回答

大家好&#xff0c;我是磚一&#xff0c;有很多人抱怨模電難學&#xff0c;被譽為電子信息掛科率最高之一&#xff0c;下面聽我分析一下為啥模電這么難學&#xff1f; 01 理科的抽象思維 在高等教育體系中&#xff0c;模電是涉及半導體方向的第一門工程類課程&#xff0c;是一…

2024年3月5-7日年生物發酵裝備展-環科環保科技

參展企業介紹 山東環科環保科技有限公司,是一家集環保設備的設計、制造、安裝、服務及環境治理工程總承包于一體的企業。 公司長期專注于大氣、水、危固廢三大領域&#xff0c;以科技創造碧水藍天&#xff0c;為客戶提供環保解決方案。 以穩定的產品及服務質量、適用的技術、…

【環境搭建】linux centos7安裝mosquitto消息代理軟件操作步驟以及遇到問題日常記錄

最近需要用到mqtt&#xff0c; 選擇安裝mosquitto。由于安裝mosquitto花了我一點時間&#xff0c;簡單記錄下。安裝環境是linux centos7&#xff0c; 其他像windows、mac或者ubuntu 參考下 https://mosquitto.org/download/ 英文官網&#xff0c;或者別人寫的文章。 服務器…

微型世界:嵌入式科技的無限可能

微型世界&#xff1a;嵌入式科技的無限可能 1. 嵌入式科技的定義與特點 定義&#xff1a;嵌入式科技是一種特殊的計算機系統&#xff0c;通常用于特定的應用領域&#xff0c;如智能手機、智能家居設備等。特點&#xff1a;小巧、低功耗、高效率、實時性強、可靠性高、成本較低…

洛谷題單_搜索

P1219 [USACO1.5] 八皇后 Checker Challenge - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) #include <bits/stdc.h> using namespace std; const int N14; int n,ans0; int a[N][N]{},vis[N][N]{}; vector<int>rcd(n1); void dfs(int dep){if(depn1){if(ans<…

有道QAnything背后的故事---關于RAG的一點經驗分享

近日&#xff0c;我們開源了有道自研的RAG&#xff08;Retrieval Augmented Generation) 引擎QAnything。該引擎允許用戶上傳PDF、圖片、Word、Excel、PowerPoint等多種格式的文檔&#xff0c;并實現類似于ChatGPT的互動問答功能&#xff0c;其中每個答案都能精確追溯到相應的文…

了解Spring中Bean:配置與作用域

作為一名對技術充滿熱情的學習者&#xff0c;我一直以來都深刻地體會到知識的廣度和深度。在這個不斷演變的數字時代&#xff0c;我遠非專家&#xff0c;而是一位不斷追求進步的旅行者。通過這篇博客&#xff0c;我想分享我在某個領域的學習經驗&#xff0c;與大家共同探討、共…

遞歸回溯剪枝-括號生成

LCR 085. 括號生成 - 力扣&#xff08;LeetCode&#xff09; 一. 根據題意&#xff0c;分析出符合要求的括號組合需要滿足以下兩個條件&#xff1a; 1. 左括號數或者右括號數都不能超過 n&#xff1b; 2. 從最左側開始的每一個子集&#xff0c;不可以出現右括號數大于左括號數&…

CF 1934B

冗長的代碼&#xff08;枚舉解法&#xff09; #include<bits/stdc.h>using namespace std;void solve() {int n;cin>>n;if(n1||n3||n6||n10||n15){cout<<1<<endl;return;}int cnt0;if(n>100){int tempn/15;if(temp>6){n-(temp-6)*15;cnttemp-6;…

算法復習之前綴和【備戰藍橋杯】

一維前綴和 S[i] a[1] a[2] ... a[i] a[l] ... a[r] S[r] - S[l - 1]二維前綴和 S[i, j] 第i行j列格子左上部分所有元素的和 以(x1, y1)為左上角&#xff0c;(x2, y2)為右下角的子矩陣的和為&#xff1a; S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] S[x1 - 1, y1 - …

中國電子學會(CEIT)2020年06月真題C語言軟件編程等級考試四級(含詳細解析答案)

中國電子學會&#xff08;CEIT&#xff09;考評中心歷屆真題&#xff08;含詳細解析答案&#xff09; C語言軟件編程等級考試四級 2020年06月 編程題四道 總分:100分一、最長上升子序列&#xff08;25分&#xff09; 一個數的序列bi&#xff0c;當b1 < b2< … &l…

長期可用的文件二維碼怎么做?在線制作可修改的文件活碼

怎么做一個可以長期使用的文件二維碼呢&#xff1f;現在通過二維碼來傳遞文件是很流行的一種方式&#xff0c;將文件生成二維碼后印刷上墻或者分享給他人都可以快速完成文件的傳播&#xff0c;所以在下發通知、資料等方面用途較多。那么文件二維碼該如何生成呢&#xff1f; 想…

Linux內存地址空間

目錄 一、虛擬地址空間 1.虛擬地址空間的定義 2.虛擬地址空間的布局 二、內存壁壘 1.內存壁壘的定義?編輯 2.段錯誤 三、內存映射的建立與解除 &#xff08;1&#xff09;mmap &#xff08;2&#xff09;munmap &#xff08;3&#xff09;堆內存的分配和釋放 1.sbrk …

Android13 設置固定熱點ip地址192.168.43.1

Android13 設置固定熱點ip地址192.168.43.1 文章目錄 Android13 設置固定熱點ip地址192.168.43.1一、前言二、設置固定ip地址實現1、Android13 代碼中的實現&#xff1a;添加屬性寫法&#xff1a; 2、Android11 或者更舊的代碼中的實現&#xff1a; 三、其他1、Android 代碼獲連…

Python中學習調試requests模塊時出現的大坑(1)

為防止迷路: 學習機械相關,請關注公眾號:南大盛聯 學習軟件,硬件,請關注公眾號號:一訓微課 cmd模式下 不知道上面這行的話,需要補課。 pip install requests 這個不知道的話,也要補課 pip是python的安裝工具。 install是安裝的意思 requests是我們需要安裝的模…

HTML超鏈接去下劃線

當在HTML中創建超鏈接時&#xff0c;默認情況下會顯示為帶有下劃線的藍色文本。如果想要去掉下劃線&#xff0c;可以使用CSS樣式來實現。 示例代碼&#xff1a; <!DOCTYPE html> <html> <head> <style> a {text-decoration: none;color: blue; /* 設…

微信小程序 --- 事件處理

事件處理 一個應用僅僅只有界面展示是不夠的&#xff0c;還需要和用戶做交互&#xff0c;例如&#xff1a;響應用戶的點擊、獲取用戶輸入的值等等&#xff0c;在小程序里邊&#xff0c;我們就通過編寫 JS 腳本文件來處理用戶的操作 1. 事件綁定和事件對象 小程序中綁定事件與…

sora會是AGI的拐點么?

©作者|謝國斌 來源|神州問學 OpenAI近期發布的Sora是一個文本到視頻的生成模型。這項技術可以根據用戶輸入的描述性提示生成視頻&#xff0c;延伸現有視頻的時間&#xff0c;以及從靜態圖像生成視頻。Sora可以創建長達一分鐘的高質量視頻&#xff0c;展示出對用戶提示的精…