vue axios 封装及使用

axios 封装

          在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是基于promise的http库,可运行在浏览器端和node.js中。他有很多优秀的特性,例如拦截请求和响应、取消请求、转换json、客户端防御XSRF等。

1、首先创建 vue 项目,安装 axios

vue create demo
cd demo
npm i axios vue-axios -S

          一般我会在项目的src目录中,新建一个 network 文件夹,然后在里面新建一个 manager.js、 request.js、requestMethods.js、api.js。
          manager.js 文件用来封装我们的axios,request.js 文件用来定义的组件内调用的方法,requestMethods.js用来导出配置好的axios实例,api.js用来统一管理我们的接口。

2、manager.js

import axios from "axios"
import { Message} from 'element-ui'

// 调用axios.create方法,配置一些属性,返回一个新的axios
const request= axios.create({
    baseURL: "http://localhost:8080/",
    //请求超时时间
    timeout: 2000
})

// 请求拦截
request.interceptors.request.use(
	//config 代表是你请求的一些信息
    config => {
        // 在请求发送之前的操作
        return config
    },
    error => {
        // 对错误请求的处理
        // 弹出错误请求消息
        Message({
            showClose: true,
            message: error.message,
            type: "error"
        })
        return Promise.reject(error)
    }
)

//  response拦截器 响应拦截器 请求之后的操作
request.interceptors.response.use(
    config => {
        return config
    },
    error => {
        return Promise.reject(error)
    }
)

export default request;

3、requestMethods.js

// 导出请求方式
export const GET = "get"
export const POST = "post"
export const POT = "pot"
export const DELETE = "delete"

4、api.js

// 
const path = {
    data:"data.json",
}
export default path

5、request.js

import fetch from "./manager"
import path from "./api"
import {GET} from "./requestMethods"

export function getShopList(params){
    return fetch({
        url:path.data,
        method:GET,
        params:params
    })
}

6、在vue组件中使用

// script 标签内
import { getShopList} from "../network/request";
export default {
  created() {
    getShopList()
      .then(res => {
        console.log(res);
      })
      .catch(err => {
        console.log(err);
      });
  }
};

你可能感兴趣的:(vue axios 封装及使用)