vue +vant 封装请求以及不同环境下请求不同的api服务器(三)

1、封装请求接口
安装axiios依赖

npm i axios -S

创建utils—request.js文件

// 封装请求
import axios from "axios";
//导入全局的状态管理
import store from "../store";

//创建axios请求实例dioxin
const request = axios.create({
  // 配置接口的基准路径
  baseURL: "http://api.cpengx.cn/",
});

// 拦截请求
request.interceptors.request.use(
  (config) => {
    // 判断有没有这个用户
    const { user } = store.state;
    // 有没有这个token
    if (user && user.token) {
      // 设置这个权限
      config.headers.Authorization = `Bearer ${user.token}`;
    }
    // 请求配置好的了 传回去
    return config;
  },
  (error) => {
    // 如果请求出错了,还没发送出去,就会进行这里
    return Promise.reject(error);
  }
);

//响应拦截器
request.interceptors.response.use(
  (response) => {
    // 如果状态显示200的话,直接返回数据
    if (response.status == 200) {
      return response.data;
    } else {
      return response;
    }
  },
  (error) => {
    return Promise.reject(error);
  }
);
export default request;

3、创建api–index.js请求测试文件夹

//请求测试
import request from '../utils/request'


export const getTestapi = () =>{
    return request({
        methods:'GET',
        url:'/',
    })
}

4、在页面中引入测试接口;并测试
在这里插入图片描述
请求接口成功
在这里插入图片描述

配置不同环境下请求不同的api服务器
1、创建测试环境.env.testDev
在这里插入图片描述

NODE_ENV = testDev
BASE_URL = http://api.cpengx.cn

2、package.json中scripts配置

"testDev":"vue-cli-service serve --mode testDev"   

![在这里插入图片描述](https://img-blog.csdnimg.cn/8512483826284258807293514a07cef9.png
在这里插入图片描述
测试运行成功
在这里插入图片描述
1、多种环境请求不同api服务
创建.env.production文件夹 和创建.testDev文件夹一样
//.env.production文件夹内容


NODE_ENV = production
BASE_URL = http://api.cpengx.cn/production

2、request.js文件夹写入

// 在不同的环境下请求不同的api服务器
//生产环境下就是用生产环境的接口
//测试环境下就是用测试服务器接口
//开发环境下就用开发环境接口
let apiBaseUrl = {
  production :"http://api.cpengx.cn/production",
  developent:"http://api.cpengx.cn/development",
  testDev:"http://api.cpengx.cn/testDev",
};
console.log(process.env.NODE_ENV);

把配置接口替换掉

  // baseURL: "http://api.cpengx.cn/",
  // 不同的模式给他不同的变量
  baseURL: apiBaseUrl[process.env.NODE_ENV] || '/',

4、request.js全码

// 封装请求
import axios from "axios";
//导入全局的状态管理
import store from "../store";
// 在不同的环境下请求不同的api服务器
//生产环境下就是用生产环境的接口
//测试环境下就是用测试服务器接口
//开发环境下就用开发环境接口
let apiBaseUrl = {
  production :"http://api.cpengx.cn/production",
  developent:"http://api.cpengx.cn/development",
  testDev:"http://api.cpengx.cn/testDev",
};
console.log(process.env.NODE_ENV);
//创建axios请求实例dioxin
const request = axios.create({
  // 配置接口的基准路径
  // baseURL: "http://api.cpengx.cn/",
  // 不同的模式给他不同的变量
  baseURL: apiBaseUrl[process.env.NODE_ENV] || '/',
});

// 拦截请求
request.interceptors.request.use(
  (config) => {
    // 判断有没有这个用户
    const { user } = store.state;
    // 有没有这个token
    if (user && user.token) {
      // 设置这个权限
      config.headers.Authorization = `Bearer ${user.token}`;
    }
    // 请求配置好的了 传回去
    return config;
  },
  (error) => {
    // 如果请求出错了,还没发送出去,就会进行这里
    return Promise.reject(error);
  }
);

//响应拦截器
request.interceptors.response.use(
  (response) => {
    // 如果状态显示200的话,直接返回数据
    if (response.status == 200) {
      return response.data;
    } else {
      return response;
    }
  },
  (error) => {
    return Promise.reject(error);
  }
);
export default request;

5、想运行生产环境.env.production
在 pakgage.json中script标签中 配置一下,“productionDev”:“vue-cli-service serve --mode productionDev” 然后运行npm run production

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值