[https://www.cnblogs.com/jpwz/p/12942538.html](https://www.cnblogs.com/jpwz/p/12942538.html)
## 1、基本用法
安裝
~~~shell
cnpm i axios --save
~~~
在`main.js`中引入`axios`
~~~javascript
import axios from 'axios'
Vue.prototype.$axios = axios
~~~
在組件中使用`axios`
~~~vue
<script>
export default {
mounted(){
this.$axios.get('/goods.json').then(res=>{
console.log(res.data);
})
}
}
</script>
~~~
## 2、axios請求方法
axios可以請求的方法:
* get:獲取數據,請求指定的信息,返回實體對象
* post:向指定資源提交數據(例如表單提交或文件上傳)
* put:更新數據,從客戶端向服務器傳送的數據取代指定的文檔的內容
* patch:更新數據,是對put方法的補充,用來對已知資源進行局部更新
* delete:請求服務器刪除指定的數據
### 2.1、get請求
示例代碼
~~~javascript
//方法一,請求格式類似于 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);
})
//方法二
this.$axios({
method: 'get',
url: '/goods.json',
params: {
id:1
}
}).then(res=>{
console.log(res.data);
},err=>{
console.log(err);
})
~~~
### 2.2、post請求
post請求一般分為兩種類型
* form-data 表單提交,圖片上傳、文件上傳時用該類型比較多
* application/json 一般是用于 ajax 異步請求
示例代碼
~~~javascript
//方法一
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);
})
~~~
### 2.3、put和patch請求
示例代碼
~~~javascript
//put請求
this.$axios.put('/url',{
id:1
}).then(res=>{
console.log(res.data);
})
//patch請求
this.$axios.put('/url',{
id:1
}).then(res=>{
console.log(res.data);
})
~~~
### 2.4、delete請求
示例代碼
~~~javascript
//參數以明文形式提交
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);
})
~~~
## 3、并發請求
并發請求:同時進行多個請求,并統一處理返回值
示例代碼
~~~javascript
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);
})
)
~~~
## 4、axios實例
### 4.1、創建axios實例
示例代碼
~~~javascript
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
### 4.2、axios全局配置
示例代碼
~~~javascript
//配置全局的超時時長
this.$axios.defaults.timeout = 2000;
//配置全局的基本URL
this.$axios.defaults.baseURL = 'http://localhost:8080';
~~~
### 4.3、axios實例配置
示例代碼
~~~javascript
let instance = this.$axios.create();
instance.defaults.timeout = 3000;
~~~
### 4.4、axios請求配置
示例代碼
~~~javascript
this.$axios.get('/goods.json',{
timeout: 3000
}).then()
~~~
以上配置的優先級為:`請求配置 > 實例配置 > 全局配置`
## 5、攔截器
攔截器:在請求或響應被處理前攔截它們
### 5.1、請求攔截器
示例代碼
~~~javascript
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
})
~~~
### 5.2、響應攔截器
示例代碼
~~~javascript
this.$axios.interceptors.response.use(res=>{
//請求成功對響應數據做處理
return res //該返回對象會傳到請求方法的響應對象中
},err=>{
// 響應錯誤處理
return Promise.reject(err);
})
~~~
### 5.3、取消攔截
示例代碼
~~~javascript
let instance = this.$axios.interceptors.request.use(config=>{
config.headers = {
token: ''
}
return config
})
//取消攔截
this.$axios.interceptors.request.eject(instance);
~~~
## 6、錯誤處理
示例代碼
~~~javascript
this.$axios.get('/url').then(res={
}).catch(err=>{
//請求攔截器和響應攔截器拋出錯誤時,返回的err對象會傳給當前函數的err對象
console.log(err);
})
~~~
## 7、取消請求
主要用于取消正在進行的http請求。
示例代碼
~~~javascript
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('取消后的信息');
~~~
- 空白目錄1
- RBAC
- RBAC權限模型[完整]
- 你知道權限管理的RBAC模型嗎?
- rbac 一個用戶對應多個賬號_如何設計一個強大的權限系統
- Postman 快速使用(設置環境變量)
- postman的使用方法詳解!最全面的教程
- Postman常用的幾個功能
- ThinkPHP項目總結
- thinkphp5 遞歸查詢所有子代,查詢上級,并且獲取層級
- PHP原生項目之留言板
- 智慧校園
- PHP如何實現訂單的延時處理詳解
- VUE
- const {data:res} = await login(this.loginForm)
- Vue中的async和await的使用
- PHP實現消息推送(定時輪詢)
- tp5 計算兩個日期之間相差的天數
- 使用jquery的ajax方法獲取下拉列表值
- jQuery實現select下拉框選中數據觸發事件
- SetFocus 方法
- 快來了解下TP6中的超級函數app()!
- PHP socket 服務器框架 workerman
- 程序員如何才能成為獨立開發者?
- PHP 錯誤處理
- php面向對象類中的$this,static,final,const,self及雙冒號 :: 這幾個關鍵字使用方法。
- 小白教你玩轉php的閉包
- 關于TP6項目搭建的坑(多應用模式)
- ThinkPHP6.0 與5.0的差別及坑點
- axios在vue項目中的使用實例詳解
- php中的類、對象、方法是指什么
- 聊一聊PHP的依賴注入(DI) 和 控制反轉(IoC)
- 深入理解控制反轉(IoC)和依賴注入(DI)
- Private,Public,Protected
- ThinkPHP5(目錄,路徑,模式設置,命名空間)
- 在 ThinkPHP6 中使用 Workerman
- 介紹thinkphp lock鎖的使用和例子
- php中_initialize()函數與 __construct()函數的區別說明
- api接口數據-驗證-整理
- api接口數據-驗證-整理【續】
- TP6容易踩得坑【原創】
- TP6的日志怎么能記錄詳細的日志?
- 是否需要模型分層
- PHP面試題 全網最硬核面試題來了 2021年學習面試跳槽必備(一)
- MySQL單表數據量過千萬,采坑優化記錄,完美解決方案
- MySql表分區(根據時間timestamp)
- MySQL大表優化方案
- 閑言碎語
- 數據庫外鍵的使用
- 深入理解thinkphp、laravel等框架中容器概念
- vue做前端,thinkphp6做后臺,項目部署
- 簡單MVC架構的PHP留言本
- TP5里面extend和vendor的區別
- 在mysql數據庫中制作千萬級測試表
- MySQL千萬級的大表要怎么優化
- ThinkPHP關聯模型操作實例分析
- lcobucci/jwt —— 一個輕松生成jwt token的插件
- RESTful API 設計指南
- MySQL如何為表字段添加索引
- ThinkPHP6.0快速開發手冊(案例版)
- tp5 靜態方法和普通方法的區別
- 數據字典功能
- mysql中的數據庫ID主鍵的設置問題
- 基于角色的權限控制(django內置auth體系)
- RBAC系統經典五張表
- 什么是接口文檔,如何寫接口,有什么規范?
- thinkphp5.0自定義驗證器