axios-【與ajax區別+vue中使用】


一.axios與ajax區別

相同點:都是執行異步請求操作

不同點:

  • 大小
    • axios體積小 只需在要使用的目錄下 npm install axios --save
    • ajax 需要導入jQuery【體積較大 只是為了ajax去引入是不值得的】
  • 針對方向
    • axios 符合前端MVVM的浪潮
    • ajax 本身是針對MVC的編程
  • 實現方法與返回值
    • axios 用promise技術實現對ajax技術的封裝  返回值是 promise
    • ajax   基於原生的XHR開發,XHR本身的架構不清晰,已經有了fetch的替代方案
  • 對並發請求的封裝api

二.axios應用

  1. 安裝axios 打開需要使用的路徑下的命令行

npm install axios --save

  2. 在需要使用 axios 的地方導入

import axios from 'axios'

  3. axios實例使用

  • 創建實例
    • axios可直接使用 axios(config)  但還是推薦創建實例,因為可以對實例進行單獨配置,下方講解
 1 axios({
 2    url:'服務器url',
 3    method:'請求方式' ,
 4    params:{
 5      name:'cc',
 6      age:'18'      
 7    } 
 8 }).then(res=>{
 9    console.log(res) 
10 })

 

    • axios.all([ ]) 一次執行多個請求【並發請求】
1 axios.all([axios({
2         //第一個請求參數
3     }), axios({
4         //第二個請求參數
5 })])
6  .then(results => {
7     //返回值數組 分別是一與二請求的結果
8     console.log(results)
9  })
    • 設置默認配置【默認屬性 可在使用時省略 類似父類】
1 axios.defaults.baseURL = '默認路徑'
2 axios.defaults.timeout = 5000

 

***注意:method:get 請求參數對應 params:{ name:'cc'}

       method:post 請求參數對應 data:{ name:'cc'}

  4. 創建實例-配置

  • 原因
    • 項目中要請求多個不同url獲取數據 因此每個的使用baseUrl 不一定相同。
    • axios是全局的 如果直接使用修改 很可能出現問題
  • 使用
    • 調用axios.create(config)的 api實現創建實例-【其中config為上面的obj對象】
1 const instance = axios.create({
2     baseURL : '請求路徑',
3     timeout : 5000
4 }) 

 

 

三、應用於vue 封裝request方法

最后對其進行封裝requset函數-【為了直接在其他地方直接使用】(分三步)

  • 創建實例
    •   放置默認配置 baseURL等
  • 增加攔截器
    •   可以對訪問請求 與 響應攔截操作 對數據進行二次加工
  • 返回網絡請求
    •   返回promise對象 完成封裝
    •   在外部使用.then()繼續實現下一步操作
 1 export function request(config) {
 2     //1.創建axios實例
 3     const instance = axios.create({
 4         baseURL: '',
 5         timeout: 5000
 6     })
 7     
 8     //2.axios攔截器
 9     //2.1請求攔截
10     instance.interceptors.request.use(config=>{
11         //攔截操作
12         return config    //必須返回回去 否則調用處取不到
13     },err=>{
14         //console.log(err)
15     })
16     //2.2響應攔截
17     instance.interceptors.response.use(res=>{
18         //攔截操作
19         return res //必須返回回去 否則調用處取不到
20     },err=>{
21         //console.log(err)
22     })
23     
24     //3發送真正的網絡請求【返回promise對象】
25     return instance(config)
26 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM