axios的封装和使用

axios的封装和使用

一、安装
npm install axios
二、封装并使用
  1. 在vue根目录下创建 .env.development(开发环境)、.env.production(生产环境)以及**.env.staging**(测试环境)

    #以开发为例
    #项目名称
    VUE_APP_NAME = "your app name"
    
    #开发环境配置
    VUE_APP_ENV = development
    
    #开发环境请求API
    VUE_APP_BASE_API = /dev-api
    
    #开发环境代理请求目标
    VUE_APP_PROXY_TARGET = "后台请求地址1"
    #VUE_APP_PROXY_TARGET = "后台请求地址2"
    
  2. 在utils文件下新建requset.js文件

    import axios from 'axios';
    // 创建axios 实例
    const service = axios.create({
      baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
      timeout: 50000 // request timeout
    });
    
    // 请求拦截器
    service.interceptors.request.use(
      (request) => {
        request.headers['Authorization'] = 'Bearer ' + '后台返回的token'
        return request;
      },
      (error) => {
        return Promise.reject(error);
      }
    );
    
    // 响应拦截器
    service.interceptors.response.use(
      (response) => {
        const res = response.data;
        if (res.code !== 200) {
          // code非 200 操作 书写逻辑
          return Promise.reject(new Error(res.msg));
        } else {
          return res;
        }
      },
      (error) => {
     	// 响应失败所做操作 书写逻辑   
        return Promise.reject(error);
      }
    );
    
    export default service;
    
  3. 在vue.config.js中配置代理

    const port = process.env.port || process.env.npm_config_port || 8080; // 端口
    // 端口配置
    devServer: {
      host: '0.0.0.0',
      port: port,
      open: false,
      proxy: {
        [process.env.VUE_APP_BASE_API]: { 
          target: process.env.VUE_APP_PROXY_TARGET, //请求地址
          changeOrigin: true,
          pathRewrite: {
            ['^' + process.env.VUE_APP_BASE_API]: ''
          }
        }
      },
      disableHostCheck: true
    },
    
  4. 在src目录下创建apis文件夹,apis下创建home文件夹,home文件夹下创建index.js

    import request from "../../utils/request";
    
    // get 请求
    export function banner (params) {
      return request({
        url: '接口拼接地址',
        method: 'get',
        params
      })
    }
    //post 请求
    export function list (data) {
      return request({
        url: '接口拼接地址',
        method: 'post',
        data
      })
    }
    
  5. 在vue中使用

    <script>
    import { banner, list } from '../../api/home/index';
    export default {
      name: 'home',
      data(){
        return{
          rotationList:[]
        }
      },
      mounted(){
        this.banner()
      },
      methods:{
        banner(){
          banner().then(res=>{
            this.rotationList = res.data
          })
        }
      }
    }
    </script>
    
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值