Mock 之搭建本地 MockJs

一、目的

模拟后端接口

二、发请求

1. install

  1. npm install axios

2. 配置

src/utils/request.js

  1. import axios from "axios"; // axios 导入包
  2. const service = axios.create({}); // axios 简单配置
  3. // /api/user/id token
  4. service.interceptors.request.use((config) => {
  5. return config;
  6. }); // axios 请求拦截
  7. service.interceptors.response.use((response) => {
  8. const { data } = response;
  9. // if (data.status == 200) {
  10. // } else if (data.status == 403) {
  11. // }
  12. return data;
  13. }); // axios响应拦截
  14. export default service;

3. 对接口发起请求

src/api/index.js

  1. import request from "@/utils/request";
  2. export const getUsers = () =>
  3. request({
  4. url: "/api/users",
  5. method: "get",
  6. });
  • axios 发起请求的代码都维护在 api 下。

三、Mock 模拟响应

1. install

  1. npm install mockjs

2. 配置

src/mock/index.js

  1. import Mock from "mockjs";
  2. // example 相关
  3. Mock.mock("/api/users", "get", function () {
  4. return Mock.mock({
  5. status: "200",
  6. msg: "请求成功",
  7. "data|3": [
  8. {
  9. name: "@cname", // Mock.Random.cname(),
  10. age: "@integer(20,50)",
  11. },
  12. ],
  13. });
  14. });

3. 把 mock 导入 main.js

导入才会执行,数据才会成功。

main.js

  1. import "@/mock";

四、请求成功且 mock 成功

1. About.vue

src/views/About.vue

  1. <template>
  2. <!-- axios & mock-验证 -->
  3. <div v-for="(item) in list" :key="item.name">
  4. <span>{{item.name}}</span>
  5. <span>{{item.age}}</span>
  6. </div>
  7. </template>
  8. <script>
  9. import { getUsers } from '@/api'
  10. import { onMounted, reactive, toRefs } from 'vue'
  11. export default {
  12. setup(){
  13. const data = reactive({
  14. list: []
  15. })
  16. onMounted(()=>{
  17. getUsers().then(res=>{
  18. console.log(res)
  19. data.list = res.data
  20. })
  21. })
  22. const dataAsRefs = toRefs(data)
  23. return dataAsRefs
  24. }
  25. }
  26. </script>

五、优化 mock 代码

1. example 模块化

src/mock/example.js

  1. import Mock from "mockjs";
  2. export default {
  3. getUsers: () => {
  4. return Mock.mock({
  5. status: "200",
  6. msg: "请求成功",
  7. "data|3": [
  8. {
  9. name: "@cname", // Mock.Random.cname(),
  10. age: "@integer(20,50)",
  11. },
  12. ],
  13. });
  14. },
  15. };

2. mock 入口文件配置

src/mock/index.js

  1. import Mock from "mockjs";
  2. import example from "./example";
  3. // example 相关
  4. Mock.mock("/api/users", "get", example.getUsers);
  5. export default Mock;

六、实际开发注意事项

1. 配置 baseURL 导致错误:

如果 axios.create({...}) 配置了 baseURL ,上一部分代码为:

src/mock/index.js

  1. import GlobalUrl "@/request/巴啦啦小魔仙"
  2. import Mock from "mockjs";
  3. import example from "./example";
  4. Mock.mock(GlobalUrl+"/api/users", "get", example.getUsers);
  5. export default Mock;

Mock 之搭建本地 MockJs的更多相关文章

  1. 使用node.js + json-server + mock.js 搭建本地开发mock数据服务

    在开发过程中,前后端不论是否分离,接口多半是滞后于页面开发的.所以建立一个REST风格的API接口,给前端页面提供虚拟的数据,是非常有必要的.对比过多种mock工具后,我最终选择了使用 json se ...

  2. json server的简单使用(附:使用nodejs快速搭建本地服务器)

    作为前端开发人员,经常需要模拟后台数据,我们称之为mock.通常的方式为自己搭建一个服务器,返回我们想要的数据.json server 作为工具,因为它足够简单,写少量数据,即可使用. 安装 首先需要 ...

  3. CentOS6.5使用createrepo搭建本地源

    本地搭建本地yum源采用的rpm全部来自CentOS-6.5-bin-DVD1&DVD2; 我的是在虚拟机环境安装,先检查我的操作系统版本: 1 2 3 4 [adam@ultraera ~] ...

  4. Dnsmasq安装与配置-搭建本地DNS服务器 更干净更快无广告DNS解析

    默认的情况下,我们平时上网用的本地DNS服务器都是使用电信或者联通的,但是这样也导致了不少的问题,首当其冲的就是上网时经常莫名地弹出广告,或者莫名的流量被消耗掉导致网速变慢.其次是部分网站域名不能正常 ...

  5. iOS开发网络篇—搭建本地服务器

    iOS开发网络篇—搭建本地服务器 一.简单说明 说明:提前下载好相关软件,且安装目录最好安装在全英文路径下.如果路径有中文名,那么可能会出现一些莫名其妙的问题. 提示:提前准备好的软件 apache- ...

  6. [转]World Wind Java开发之四——搭建本地WMS服务器

    在提供地理信息系统客户端时,NASA还为用户提供了开源的WMS Server 服务器应用:World Wind WMS Server.利用这个应用,我们可以架设自己的WMS服务并使用自己的数据(也支持 ...

  7. 使用eclipse+tomcat搭建本地环境

    项目开发工具很多,这里简单介绍下使用eclipse+tomcat如何搭建本地环境. 安装开发工具如下: 1. jdk的安装参考 下载地址:http://pan.baidu.com/s/1sj9rVYX ...

  8. 在linux上搭建本地yum源

    准备yum仓库的光盘镜像IOS文件: 设置光驱加载本地磁盘的yum仓库的光盘镜像文件: 在linux的命令行输入setup命令打开设置窗口,选择"System Service": ...

  9. IIS搭建本地服务器,花生壳实现外网通过域名访问网站

    配置服务器 作为一个青年,没有实力,做不出标图所示的服务器. 作为一个学生,买不起服务器 作为一个小孩,买不起域名 但别忘了 作为一个平民玩家,只要有耐心 装备迟早会做出来的 (注:感觉有钱与没钱还是 ...

随机推荐

  1. 2_状态空间_State Space

  2. 写了一个web os脚手架

    预览地址在这里:http://thx.github.io/magix-os/项目地址在这里:https://github.com/thx/magix-os 介绍下目录结构 核心目录cores主要是构成 ...

  3. 删除html标签或标签属性以及样式

    JavaScript module for stripping HTML tags and/or HTML element attributes from strings. 安装 npm instal ...

  4. 《深入理解ES6》笔记——块级作用域绑定(1)

    本章涉及3个知识点,var.let.const,现在让我们了解3个关键字的特性和使用方法. var JavaScript中,我们通常说的作用域是函数作用域,使用var声明的变量,无论是在代码的哪个地方 ...

  5. Python中使用正则表达式获取两个字符中间部分

    问题背景:当我们爬取网页信息时,对于一些标签的提取是没有意义的,所以需要提取标签中间的信息. 解决办法:用到了re包下的函数 方法1:用到了research()方法和group()方法 方法2:用到了 ...

  6. indexOf返回值问题

    String s = "aoood";System.out.println(s.indexOf(""));//返回0 System.out.println(s. ...

  7. 实战-DRF快速写接口(认证权限频率)

    实战-DRF快速写接口 开发环境 Python3.6 Pycharm专业版2021.2.3 Sqlite3 Django 2.2 djangorestframework3.13 测试工具 Postma ...

  8. Java基础之详谈IO流

    Java基础知识.IO流详细讲解.你所要的IO这里都有

  9. ADO访问Excel

    需要安装驱动:Microsoft Access Database Engine,可搜索下载,有64位和32位之分. 随便新建一个后缀名为udl的文件,双击打开.注意,现如今一般都是64位系统,双击打开 ...

  10. redis无损数据迁移

    在dba眼中,redis仅仅是一个缓存,不适合作为存储来使用,不管是redis-sentinel集群还是cluster集群,在redis主节点发生意外宕机时没有机制来保证主从节点数据的一致性.但是,很 ...