首頁 >web前端 >js教程 >vue中axios封裝的基本介紹(附程式碼)

vue中axios封裝的基本介紹(附程式碼)

不言
不言原創
2018-08-14 15:41:313373瀏覽

這篇文章帶給大家的內容是關於vue中axios封裝的基本介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

Axios 是一個基於 promise 的 HTTP 函式庫,可以用在瀏覽器和 node.js 中。在vue專案之中使用axios是一個非常明智的選擇,因為vue官方已經宣稱不再維護vue-resource,並且推薦使用axios.

1 為什麼選擇axios?

  1. 使用axios可以統一做請求-回應攔截,例如回應時我們將回應訊息攔截起來,判斷狀態碼,從而彈出報錯訊息

  2. 設定請求逾時,例如3000ms未回應則停止請求

  3. 基於promise,可以很方便地使用then或catch來處理請求

  4. #自動轉換json資料

2 如何使用?

可以使用以下方式

1. npm install axios --save
2. bower install axios --save
3. <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

3 封裝http請求
官網給定的實例:

axios.get('/user?ID=12345')
  .then(function(response){
    console.log(response);
  })
  .catch(function(err){
    console.log(err);
  });

在此基礎上我們應該再次封裝http中的post get put delete方法,在特定頁面只需要呼叫介面函數以及傳入params即可,其餘例如url,header之類的我們應該進行封裝。
例如在index.vue之中使用一個函數來實現透過id來獲取對應的用戶信息,返回結果在then方法的result之中

API.getUserInfo({id:'01'}).then((result)=>{})

4 實現思路
新建一個文件,建立一個axios物件實例例如axios.js

import axios from 'axios';
import router from '../router';
// 创建axios实例
const service = axios.create({            
  timeout: 30000 // 请求超时时间                                   
})
// 添加request拦截器 
service.interceptors.request.use(config => {         
  return config
}, error => {
  Promise.reject(error)
})
// 添加respone拦截器
service.interceptors.response.use(                  
  response => {
    let res={}; 
    res.status=response.status
    res.data=response.data;
    return res;
  },
  error => {
    if(error.response && error.response.status == 404){
     router.push('/blank.vue')
    }
   
        
    return Promise.reject(error.response)
  }
)

export function get(url, params = {}) {
  params.t = new Date().getTime(); //get方法加一个时间参数,解决ie下可能缓存问题.
  return service({
    url: url,
    method: 'get',
    headers: {     
    },
    params
  })
}


//封装post请求
export function post(url, data = {}) { 
  //默认配置 
  let sendObject={
    url: url,
    method: 'post',
    headers: {
      'Content-Type':'application/json;charset=UTF-8'       
    },
    data:data
  };
  sendObject.data=JSON.stringify(data);
  return service(sendObject)
}

//封装put方法 (resfulAPI常用)
export function put(url,data = {}){
  return service({
    url: url,
    method: 'put',
    headers: {
      'Content-Type':'application/json;charset=UTF-8'       
    },
    data:JSON.stringify(data)
  }) 
}
//删除方法(resfulAPI常用)
export function deletes(url){
  return service({
    url: url,
    method: 'delete',
    headers: {}
  }) 
}

//不要忘记export
export {
  service
}

上述程式碼主要實作一個基本的axios封裝,請求成功時取得回應對象,我們主需要取得幾個有用的資訊即可,例如狀態碼,數據即可,同時處理錯誤,例如返回404我們跳到一個新界面

封裝接口函數
新文件,例如api.js

import {get, post,deletes,put} from './axios.js' ;//导入axios实例文件中方法
let bsae_api = process.env.BASE_API ? './'+process.env.BASE_API :'..' //获取项目api请求地址
//根据id获取用户信息
export const getUserInfoById=(id)=>{
    return get(`${bsae_api}/web/user/${id}`); //resfulapi风格
}

具體頁面使用index.vue

import API from '@/utils/api'
getUserInfo(){
  API.getUserInfoById('01).then((result)=>{
   }).catch((error)=>{
 })
}

以上就是一些axios封裝的基本介紹

#相關推薦:

#vue使用axios與封裝


############################## ##axios封裝fetch呼叫詳解################

以上是vue中axios封裝的基本介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn