1. 程式人生 > >###基於`vue-cli`對`axios`的封裝及使用

###基於`vue-cli`對`axios`的封裝及使用

1 引入axios檔案

    import axios from 'axios';

2.建立axios的例項物件

    const request = axios.create({
    baseURl: process.env.BASE_API,   // config檔案下的prod.env.js中文路徑
    timeout: 15000,   // 請求的超時時間
    });

3.傳送請求request(建立的axios的例項物件)的攔截器 在傳送任何請求之前,都會先經過這個攔截器

    request.interceptors.request.use(config => {
    // 在傳送請求之前所要執行的邏輯程式碼
// 當登入使用者裡面有`token`值時,讓每一個請求攜帶token值 if(token){ config.headers.Authorization = token; } return config; },error => { // 在請求錯誤做的邏輯程式碼 return Promise.reject(error); })

4.得到伺服器相應的資料response的攔截器 在接受任何伺服器中的資料,都會先經過這個攔截器

    request.interceptors.response.use
(response => { // 對得到相應資料做的邏輯程式碼 return response; },error => { // 對相應錯誤做的邏輯程式碼 return Promise.reject(error); })

5.預設向外暴露建立這個axios例項物件中的方法屬性

    export default{
    // axios.get的方法
    get(url,params){
        return request({
            url,
            method:'get'
, params }) }, // axios.post方法向後臺傳遞的引數為 data post(url,params){ return request({ url, method:'post', data:qs.stringify(params) }) }, // 刪除 axios.delete方法 delete(url,params){ return request({ url, method:'delete', params }) }, // 更新 axios.put方法 put(url,params){ return request({ url, method:'put', data:qs.stringify(params) }) } 這裡用到了ES 6中的語法,當物件名和函式名相同時,可以省略物件名;定義的操作方法,返回的是axios的例項呼叫的方法 }

6.引入axios封裝好的方法,用來呼叫後臺介面

    import server from './request';

7.呼叫後臺介面的使用語法

    export const getData = (params) => {
        return server.post('後臺介面的地址',params)
        }
        向外暴露定義的一個函式,他的返回值為呼叫後臺介面返回的資料

8.在vue檔案中引用介面函式的語法

    // 當有多個介面函式時,繼續向{}中新增即可
    import {getData} from '介面的檔案路徑'
    // 呼叫介面,向後臺傳遞引數,得到資料
    getData(params).then(res => {
        const result = res.data;   // 得到的後臺資料
        })