vue axios封裝方法

創建個request.js 文件

import axios from "axios";
import { throwErr } from "../utils"; //utils 捕捉服務端http狀態碼的方法
import store from "@/store"; //引入vuex的相關操作
// eslint-disable-next-line no-unused-vars
import router from "@/router";

//過濾請求
axios.interceptors.request.use(
  config => {
    //config 爲請求的一些配置 例如:請求頭 請求時間 Token  可以根據自己的項目需求個性化配置,參考axios的中文說明手冊  自己多動動手
    config.timeout = 10 * 1000; //請求響應時間
    return config;
  },
  error => {
    return Promise.reject(error);
  }
);
// 添加響應攔截器
axios.interceptors.response.use(
  response => {
    if (response.data.code === 0) {
      //服務端定義的響應code碼爲0時請求成功
      return Promise.resolve(response.data);
      //使用Promise.resolve 正常響應
    } else if (response.data.code === 1401) {
      //服務端定義的響應code碼爲1401時爲未登錄
      store.dispatch("setUserInfo", {});
      Message({
        message: "未登錄"
      });
      // router.push('/login')
      return Promise.reject(response.data); //使用Promise.reject 拋出錯誤和異常
    } else {
      return Promise.reject(response.data);
    }
  },
  error => {
    if (error && error.response) {
      let res = {};
      res.code = error.response.status;
      res.msg = throwErr(error.response.status, error.response); //throwErr 捕捉服務端的http狀態碼 定義在utils工具類的方法
      return Promise.reject(res);
    }
    return Promise.reject(error);
  }
);
export default function request(method, url, data) {
  //暴露 request 給我們好API 管理
  method = method.toLocaleLowerCase(); //封裝RESTful API的各種請求方式 以 post get delete爲例
  if (method === "post") {
    return axios.post(url, data); //axios的post 默認轉化爲json格式
  } else if (method === "get") {
    return axios.get(url, {
      params: data
    });
  } else if (method === "delete") {
    return axios.delete(url, {
      params: data
    });
  }
}

繼續創建個http.js文件,引入request.js文件

import request from "./request"; //引入axios的封裝方法
const api = 'http://192.168.1.20:8765/apis'
export const loginRequest = params => {
  return request("post", api + "/user/pc/api/user/login/password", params); //登陸管理員獲取自身信息
};


export const register = params => {
  return request("post", api + "/system/pc/menu/user/list", params); //獲取菜單
};


export const deleteAdmin = (id, params) => {
  return request("delete", api + `/api/v1.0/admin/${id}`, params); //更新管理員信息
};

最後在項目組件中使用就可以啦
引入接口方法

import { loginRequest, regi } from '@/api/http.js'

然後就可以使用啦

methods: {
    async tok () {
      let res = await regi()
      console.log(res)
    },
    async login () {
      let obj = {
        clientId: "lkb65617f842ad4c37895a733b8de43cbb",
        ip: "127.0.0.0",
        mobile: this.user,
        password: this.password
      }
      let res = await loginRequest(obj)
      if (res.code === 200) {
        this.$router.push('/about')
        this.$message({
          message: '恭喜你,登錄成功',
          type: 'success'
        })
        storage.set('userInfo', res.data)
      }
      console.log(res)
    }
  }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章