一文聊聊vue專案中怎麼使用axios?基本用法分享
提示:本篇詳解axios在vue專案中的實例。在使用Vue.js框架開發前端專案時,會經常發送ajax請求服務端接口,在開發過程中,需要對axios進一步封裝,方便在專案中的使用。 【學習影片分享:vue影片教學、web前端影片】
#Axios簡介
##axios框架全名(ajax – I/O – system):
- 基於
- promise
用於瀏覽器和
node.js的http客戶端,因此可以使用Promise API
#一、axios是乾啥的
說到axios我們就不得不說下
Ajax。在舊瀏覽器頁面在向伺服器請求數據時,因為返回的是整個頁面的數據,頁面都會強制刷新一下,這對於用戶來講並不是很友好。而我們只是需要修改頁面的部分數據,但是從伺服器端發送的卻是整個頁面的數據,十分消耗網路資源。而我們只是需要修改頁面的部分數據,也希望不刷新頁面,因此非同步網路請求就應運而生。
Ajax(Asynchronous JavaScript and XML): 非同步網路請求。 Ajax能夠讓頁面無刷新的請求資料。
- 原生的XMLHttpRequest的配置和呼叫方式都很繁瑣,實現異步請求十分麻煩
- jQuery的ajax相對於原生的ajax是非常好用的,但是沒有必要因為要用ajax異步網絡請求而引用jQuery框架
#Axios(ajax i/o system): 這不是一種新技術,本質上還是原生XMLHttpRequest的封裝,可用於瀏覽器和nodejs的HTTP客戶端,只不過它是基於Promise的,符合最新的ES規格。具備以下特點:
- 在瀏覽器中建立XMLHttpRequest請求
- 在node.js中發送http請求
- 支援Promise API
- #攔截請求和回應
- 轉換請求和回應資料
- 取消要求
- 自動轉換JSON資料
- 客戶端支援防止CSRF/XSRF(跨網域請求偽造)
#二、安裝使用
安裝有三種方式:npm安裝npm install axios
bower install axios
<script></script>
main.js文件中引入
axios
import axios from 'axios' Vue.prototype.$axios = axios
axios
<script> export default { mounted(){ this.$axios.get('/goods.json').then(res=>{ console.log(res.data); }) } } </script>
##三、Axios請求方式
get:取得數據,請求指定的訊息,返回實體物件- post:向指定資源提交資料(例如表單提交或文件上傳)
- put:更新數據,從客戶端傳送到伺服器的資料取代指定的文件的內容
- patch:更新數據,是對put方法的補充,用來對已知資源進行局部更新
- delete:請求伺服器刪除指定的數據
方法一
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> //请求格式类似于 http://localhost:8080/goods.json?id=1
this.$axios.get('/goods.json',{
params: {
id:1
}
}).then(res=>{
console.log(res.data);
},err=>{
console.log(err);
})</pre><div class="contentsignin">登入後複製</div></div>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">this.$axios({
method: 'get',
url: '/goods.json',
params: {
id:1
}
}).then(res=>{
console.log(res.data);
},err=>{
console.log(err);
})</pre><div class="contentsignin">登入後複製</div></div>
post請求一般分為兩種類型1、
表單提交,圖片上傳、檔案上傳時用此類型比較多 2、application/ json 一般用於ajax 非同步請求範例程式碼
# 方法一
this.$axios.post('/url',{ id:1 }).then(res=>{ console.log(res.data); },err=>{ console.log(err); })
方法二
$axios({ method: 'post', url: '/url', data: { id:1 } }).then(res=>{ console.log(res.data); },err=>{ console.log(err); })
form-data請求
let data = { //请求参数 } let formdata = new FormData(); for(let key in data){ formdata.append(key,data[key]); } this.$axios.post('/goods.json',formdata).then(res=>{ console.log(res.data); },err=>{ console.log(err); })
#範例程式碼
put請求
#
this.$axios.put('/url',{ id:1 }).then(res=>{ console.log(res.data); })
patch請求
this.$axios.patch('/url',{ id:1 }).then(res=>{ console.log(res.data); })
#範例程式碼
###參數以明文形式提交######this.$axios.delete('/url',{ params: { id:1 } }).then(res=>{ console.log(res.data); })
this.$axios.delete('/url',{ data: { id:1 } }).then(res=>{ console.log(res.data); }) //方法二 axios({ method: 'delete', url: '/url', params: { id:1 }, //以明文方式提交参数 data: { id:1 } //以封装对象方式提交参数 }).then(res=>{ console.log(res.data); })
this.$axios.all([ this.$axios.get('/goods.json'), this.$axios.get('/classify.json') ]).then( this.$axios.spread((goodsRes,classifyRes)=>{ console.log(goodsRes.data); console.log(classifyRes.data); }) )
四、Axios实例
示例代码
let instance = this.$axios.create({ baseURL: 'http://localhost:9090', timeout: 2000 }) instance.get('/goods.json').then(res=>{ console.log(res.data); })
可以同时创建多个axios实例。
axios实例常用配置:
- baseURL 请求的域名,基本地址,类型:String
- timeout 请求超时时长,单位ms,类型:Number
- url 请求路径,类型:String
- method 请求方法,类型:String
- headers 设置请求头,类型:Object
- params 请求参数,将参数拼接在URL上,类型:Object
- data 请求参数,将参数放到请求体中,类型:Object
示例代码
//配置全局的超时时长 this.$axios.defaults.timeout = 2000; //配置全局的基本URL this.$axios.defaults.baseURL = 'http://localhost:8080';
示例代码
let instance = this.$axios.create(); instance.defaults.timeout = 3000;
示例代码
this.$axios.get('/goods.json',{ timeout: 3000 }).then()
以上配置的优先级为:请求配置 > 实例配置 > 全局配置
五、拦截器
拦截器:在请求或响应被处理前拦截它们
示例代码
this.$axios.interceptors.request.use(config=>{ // 发生请求前的处理 return config },err=>{ // 请求错误处理 return Promise.reject(err); }) //或者用axios实例创建拦截器 let instance = $axios.create(); instance.interceptors.request.use(config=>{ return config })
示例代码
this.$axios.interceptors.response.use(res=>{ //请求成功对响应数据做处理 return res //该返回对象会传到请求方法的响应对象中 },err=>{ // 响应错误处理 return Promise.reject(err); })
示例代码
let instance = this.$axios.interceptors.request.use(config=>{ config.headers = { token: '' } return config }) //取消拦截 this.$axios.interceptors.request.eject(instance);
六、错误处理
示例代码
this.$axios.get('/url').then(res={ }).catch(err=>{ //请求拦截器和响应拦截器抛出错误时,返回的err对象会传给当前函数的err对象 console.log(err); })
七、取消请求
示例代码
let source = this.$axios.CancelToken.source(); this.$axios.get('/goods.json',{ cancelToken: source }).then(res=>{ console.log(res) }).catch(err=>{ //取消请求后会执行该方法 console.log(err) }) //取消请求,参数可选,该参数信息会发送到请求的catch中 source.cancel('取消后的信息');
以上是一文聊聊vue專案中怎麼使用axios?基本用法分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 <router-link to="/"> 組件window.history.back(),方法選擇取決於場景。

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

NetflixusesAcustomFrameworkcalled“ Gibbon” BuiltonReact,notReactorVuedIrectly.1)TeamSperience:selectBasedonFamiliarity.2)ProjectComplexity:vueforsimplerprojects:reactforforforproproject,reactforforforcompleplexones.3)cocatizationneedneeds:reactoffipicatizationneedneedneedneedneedneeds:reactoffersizationneedneedneedneedneeds:reactoffersizatization needefersmoreflexibleise.4)

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 <script> 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。
