vue axios封裝

今天童鞋問問axios怎么封裝,我把自己封裝的給貼上來缩歪。其中也有參考百度的归薛。
我習慣在src目錄下創(chuàng)建一個libs文件,然后在libs文件下創(chuàng)建axios.js.

// axios.js
import axios from "axios";
import { message } from "ant-design-vue"; // 這里是引用了一個公共的彈框

class HttpRequest {
  constructor(baseUrl = baseURL) {
    this.baseUrl = baseUrl;
    this.queue = {};
  }
  getInsideConfig() {
    return {
      baseURL: this.baseUrl
    };
  }
  destroy(url) {
    delete this.queue[url];
    if (!Object.keys(this.queue).length) {
      // Spin.hide()
    }
  }
  interceptors(instance, url) {
    // 請求攔截
    instance.interceptors.request.use(
      config => {
        // 添加全局的loading...
        if (!Object.keys(this.queue).length) {
          // Spin.show() // 不建議開啟匪蝙,因為界面不友好
        }
        this.queue[url] = true;
        return config;
      },
      error => {
        return Promise.reject(error);
      }
    );
    // 響應攔截
    instance.interceptors.response.use(
      res => {
        this.destroy(url);
        const { data, status } = res;
        return { data, status };
      },
      error => {
        this.destroy(url);
        let errorInfo = error.response;
        if (!errorInfo) {
          const {
            request: { statusText, status },
            config
          } = JSON.parse(JSON.stringify(error));
          errorInfo = {
            statusText,
            status,
            request: { responseURL: config.url }
          };
        }
        this.addErrorLog(errorInfo);
        return Promise.reject(error);
      }
    );
  }
  addErrorLog(err) {
    // console.log(err);
    const { status } = err;
    switch (status) {
      case 510:
        // console.log(message);
        message.error("登錄失效主籍,請重新登錄");
        break;
      case 500:
        message.error(err.data);
        break;
      case 404:
        err.data.message === "No message available"
          ? message.error("請求錯誤")
          : message.error(err.data.message);
        break;
      default:
        message.error(err.data);
    }
  }
  request(options) {
    const instance = axios.create();
    options = Object.assign(this.getInsideConfig(options), options);
    this.interceptors(instance, options.url);
    return instance(options);
  }
}
export default HttpRequest;

然后在axios.js 同級 創(chuàng)建api.request.js

// api.request.js
import HttpRequest from "./axios";
// 這里寫的是請求路徑的ip或者域名
const baseUrl =
  process.env.NODE_ENV === "development"
    ? "" : window.location.origin + window.location.pathname;
const axios = new HttpRequest(baseUrl);
export default axios;

以上就是 axios 的封裝了。接下來看一下是怎么使用的
libs 文件同級創(chuàng)建api文件夾逛球,api下放置各個模塊的接口js文件千元,直接看文件內如何使用

import axios from "@/libs/api.request";

export const centerMesList = () => {
   return axios.request({
         url: "api/v1/board/getMesList",
         methods: "get"
   });
};

然后在調用接口的頁面直接引用

import { centerMesList, centerOeeList } from "@/api/board";
// 寫到方法中
centerMesList().then(res => {
        const { status, data } = res;
        if (status === 200) {
          const { code, error, result } = data;
          if (code === 200) {
          } else {
            this.$message.error(error);
          }
        } else {
          this.$message.error("請求異常");
        }
      });


?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颤绕,隨后出現(xiàn)的幾起案子幸海,更是在濱河造成了極大的恐慌,老刑警劉巖奥务,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件物独,死亡現(xiàn)場離奇詭異,居然都是意外死亡氯葬,警方通過查閱死者的電腦和手機挡篓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來溢谤,“玉大人瞻凤,你說我怎么就攤上這事∈郎保” “怎么了阀参?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長瞻坝。 經(jīng)常有香客問我蛛壳,道長杏瞻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任衙荐,我火速辦了婚禮捞挥,結果婚禮上,老公的妹妹穿的比我還像新娘忧吟。我一直安慰自己砌函,他們只是感情好,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布溜族。 她就那樣靜靜地躺著讹俊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪煌抒。 梳的紋絲不亂的頭發(fā)上仍劈,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音寡壮,去河邊找鬼贩疙。 笑死,一個胖子當著我的面吹牛况既,可吹牛的內容都是我干的这溅。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坏挠,長吁一口氣:“原來是場噩夢啊……” “哼芍躏!你這毒婦竟也來了?” 一聲冷哼從身側響起降狠,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤对竣,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后榜配,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體否纬,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年蛋褥,在試婚紗的時候發(fā)現(xiàn)自己被綠了临燃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡烙心,死狀恐怖膜廊,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情淫茵,我是刑警寧澤爪瓜,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站匙瘪,受9級特大地震影響铆铆,放射性物質發(fā)生泄漏蝶缀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一薄货、第九天 我趴在偏房一處隱蔽的房頂上張望翁都。 院中可真熱鬧,春花似錦谅猾、人聲如沸柄慰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽先煎。三九已至,卻和暖如春巧涧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背遥倦。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工谤绳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袒哥。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓缩筛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親堡称。 傳聞我的和親對象是個殘疾皇子瞎抛,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內容

  • 1.安裝axios 2.新建一個axios.js文件,對axios進行封裝 3.api.js(api的統(tǒng)一管理却紧,模...
    w_wx_x閱讀 322評論 0 0
  • 1桐臊,在src中新建request 文件夾,文件夾中包含api.js 和http.js api.js 中的代碼如下:...
    一葉孤舟1990閱讀 365評論 0 0
  • 為什么要對Axios進行封裝 通常我們的項目會越做越大,頁面也會越來越多,如果頁面非常的少,直接用axios也沒有...
    Guyere閱讀 1,689評論 0 0
  • vue腳手架中晓殊,全局封裝axios断凶,讓使用過程中更方便,更加容易管理各種api接口 一巫俺、axios封裝——http...
    coderluojz閱讀 323評論 0 2
  • 公司項目要求用H5寫 作為一個iOS菜鳥搞起來啊认烁,首先是搭建項目框架,項目框架直接用vue-cli搭建好介汹,接下來是...
    千里111閱讀 1,325評論 0 3