簡單封裝axios api

  • 可以在代碼邏輯中寫axios請求,處理請求結(jié)果,但是隨著項目越來越大,代碼會很繁瑣,不容易維護,所以,可以把一些在所有請求中都要處理的邏輯抽取出來,封裝成api方法。比如每次請求中都要判斷是否有權(quán)限,每次請求都要攜帶token。
  1. 建一個request.js文件
import axios from 'axios'

// create an axios instance
const service = axios.create({
    // baseURL: process.env.BASE_API, // api的base_url
    // timeout: 5000,
    //headers: { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' },
    headers: { 'haha': 'kkkkkkkkkkkkkkk' },
    //method: 'get', //一般需要用post
    // request timeout
})

// request interceptor  請求之前的攔截器
service.interceptors.request.use(config => {
    // Do something before request is sent
    return config
}, error => {
    // Do something with request error
    console.log(error) // for debug
    Promise.reject(error)
})

// respone interceptor 請求之后異常狀態(tài)攔截
service.interceptors.response.use(
    response => {
        const res = response.data;
        if (res.statusCode === 201 || res.statusCode === 400 || res.statusCode === 401 || res.statusCode === 403 || res.statusCode === 404) {
            return Promise.reject('error');
        } else {
            return response.data;
        }
    },
    error => {
        console.log('err' + error)// for debug
        return Promise.reject(error)
    }
)

export default service

2.添加auth.js文件,代碼:

//與用戶驗證相關(guān)的方法

export function getToken() {
    //從localstorage獲取token
    return localStorage.getItem('token');
}

export function setToken(token) {
    //本地緩存存儲token
    localStorage.setItem('token', token);
}

export function removeToken() {
    //本地緩存移除token
    localStorage.removeItem('token');
}

export function getUserId() {
    //從本地緩存中獲取userID
    return localStorage.getItem("userid");
}

export function setUserId(userid) {
    //本地緩存存儲userId
    localStorage.setItem('userid', userid);
}

export function removeUserId() {
    //本地緩存移除userId
    localStorage.removeItem('userid');
}

3.在store.js中,添加如下:

import Vue from 'vue'
import Vuex from 'vuex'
import { getToken, setToken, removeToken, getUserId, setUserId, removeUserId } from '../Utils/auth.js'

Vue.use(Vuex);

/*訪問狀態(tài)對象--存放變量*/
const state = {
    token: getToken(),
    userId: getUserId(),
}
/*訪問觸發(fā)對象--存放事件*/
const mutations = {
    SET_TOKEN: (state, token) => {
        setToken(token);
        //state.token = token;
        //localStorage.setItem('token', token);
    },
    SET_USER_ID: (state, m) => {
        setUserId(m);
    },

    //用戶注銷后刪除所有本地數(shù)據(jù)
    LOGOUT: (state) => {
        removeToken();
        removeUserId();
    }
}
export default new Vuex.Store({
    state,
    mutations
})

4.添加testapi.js

import request from './request'
export function getTest(apiRoute) {
    return request({
        url: apiRoute,
        method: 'get',
        params: { "ai": "ai" }
    })
}

5.使用api

//test,testapi
  created: function() {
    var _this = this;
    //test
    getTest("/project/test").then(response => {
      _this.testapi = response.data;
    });
  },
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,226評論 3 119
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • 【村官朋友實拍】秋去冬來,你我都在忙著給自己增添新衣服抵御嚴冬的到來,可在景洪市勐旺鄉(xiāng)瑤家村委會貧困山區(qū),很多孩子...
    gero0_0閱讀 777評論 0 0
  • 剛才整理辦公室電腦桌面,一個文件夾里全是兒的照片,有小時候的,捎大一點的,還有一兩年前的,記憶的閘門被打開,美好的...
    zhzhtydnkshyb閱讀 334評論 0 1
  • 本來以為跑不下來,慢慢跑也就跑完了。只怕堅持。 早晨的海灣風景獨好。從“高”樓那里跑過來再跑回去就是6公里。
    AndySong_1ee8閱讀 571評論 0 0

友情鏈接更多精彩內(nèi)容