当前位置:   article > 正文

vue2 + axios + mock.js封装过程,包含mock.js获取数据时报404状态的解决记录,带图文,超详细!!!_mock数据404

mock数据404

vue + axios + mock.js

以下是封装的过程,记录一下

1、首先先了解什么是mock.js的用途及特点

       官网地址:Mock.js (mockjs.com)

       作用:生成随机数据,拦截 Ajax 请求

       优势:

2、了解axios的原理及使用

        官网地址:Axios中文文档 | Axios中文网 (axios-http.cn)

        作用:Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js

----------------------以上均认为你已了解后,接下来开始封装----------------------

1、首先安装依赖包

  1. npm install mockjs --save-dev
  2. npm install axios --save

2、添加环境变量,以便在后续与后端对接接口时方便更改(根据自己的情况更改)

        开发环境:.env.development

                

        生成环境:.env.production

                

      在随便一个vue文件中能conlog.log(process.env.VUE_APP_BASE_URL)打印出来就是配置好了

3、在src下面创建一个utils文件夹,创建一个request.js文件

  1. import axios from "axios";
  2. const request = axios.create({
  3. baseURL: process.env.VUE_APP_BASE_URL, // 设置默认的
  4. timeout: 5000, // 设置默认的请求超时时间
  5. });
  6. // 添加请求拦截器
  7. request.interceptors.request.use(
  8. (config) => {
  9. // 在发送请求
  10. return config;
  11. },
  12. (error) => {
  13. // 对请求错误做些什么
  14. return Promise.reject(error);
  15. }
  16. );
  17. // 添加响应拦截器
  18. request.interceptors.response.use(
  19. (response) => {
  20. // 对响应数据做点什么
  21. return response.data;
  22. },
  23. (error) => {
  24. // 对响应错误做点什么
  25. return Promise.reject(error);
  26. }
  27. );
  28. export default request;

4、在utils中创建一个mock.js的文件

    这个文件里可以配置你需要的api的字段,以下示例 '/api/list','get'请求

  1. import Mock from "mockjs";
  2. Mock.mock("/api/list", "get", () => {
  3. return Mock.mock({
  4. code:200,
  5. "data|1-10": [
  6. {
  7. id: "@id", //随机生成id
  8. name: "@cname", //随机生成中文名字
  9. "age|18-60": 1, //随机生成18-60的数字
  10. "sex|1-2": 1, //随机生成1-2的数字
  11. "salary|1000-10000": 1, //随机生成1000-10000的数字
  12. "birthday": "@date", //随机生成日期
  13. "time": "@time", //随机生成时间
  14. "content": "@cparagraph", //随机生成中文段落
  15. "img": "@image('200x100', '#50B347', '#FFF', 'png', 'Mock.js')", //随机生成图片
  16. "address": "@county(true)", //随机生成地址
  17. "email": "@email", //随机生成邮箱
  18. "ip": "@ip", //随机生成ip
  19. "url": "@url", //随机生成url
  20. },
  21. ],
  22. });
  23. });

5、在main.js中引入utils中的这个mock.js

     

6、接着,在src文件下再创建一个api文件夹,并创建一个user.js文件

      在user.js文件下引入封装好的request.js文件,然后把刚刚在mock.js中创建的'/api/list'暴露出去

  1. import request from '@/utils/request'
  2. export function getCase() {
  3. return request({
  4. url: '/api/list',
  5. method: 'get'
  6. })
  7. }

7、随便创建一个vue文件,现在开始测试

        

        打印后得到:

            404 !

----------------------报404状态码,哈哈哈哈哈哈哈哈哈哈哈哈哈----------------------

----------------------不过没关系,接着来:----------------------

我先告诉你哪里的错误吧,然后接着再跟你分享原因

问题就在这个 baseURL

解决过程:

1、既然我封装的报了错,那我就用原生的测试一下有没有数据

      a、在main.js中引入axios:

  1. import axios from 'axios'
  2. Vue.prototype.$axios = axios

      b、在刚刚的vue文件中用原生的测试一下

  1. mounted() {
  2. // 封装的
  3. getList().then(res => {
  4. console.log(res);
  5. })
  6. // 原生的
  7. this.$axios.get('/api/getList')
  8. .then(function (response) {// 处理成功情况
  9. console.log(response);
  10. })
  11. .catch(function (error) {// 处理错误情况
  12. console.log(error);
  13. })
  14. .finally(function () {// 总是会执行情况
  15. debugger
  16. });
  17. },

c、此时发现,封装的404,原生的成功了;

     

     这时发现封装的请求URL是''http://localhost:8080/api/getList''

      

     那我们就把这个'http://localhost:8080',加到原生的地址上面去结果也是404,那就晓得了,直接找到request.js,把baseURL的地址设为空就好了。

至此。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/707268
推荐阅读
相关标签
  

闽ICP备14008679号