Vue3+vite项目中使用mock模拟接口

安装依赖

分别安装vite-plugin-mock跟mockjs两个插件

npm install -D vite-plugin-mock mockjs

vite.config.ts中添加配置,主要是红色标记的配置

注意此处如果配置出错可能是vite-plugin-mock依赖的版本有问题,重新安装一下依赖指定版本即可,这里推荐使用2.9.6版本的

// mock插件提供的方法
import { viteMockServe } from "vite-plugin-mock";

// https://vitejs.dev/config/
export default defineConfig(({command})=>{
  return {
    plugins: [
      vue(),
      viteMockServe({
        localEnabled: command === "serve"//主要是这段配置
      }),
      createSvgIconsPlugin({
        iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
        symbolId: 'icon-[dir]-[name]',
      })
    ],
    resolve: {
      // 设置文件./src路径为 @
      alias: {
          "@": path.resolve('./src')
      }
    },
    css: {
      preprocessorOptions: {
        scss: {
          additionalData: `@import "@/style/variable.scss";`,
        },
      },
    }
  }
})

根路径(src平级的目录)新建文件夹mock,新建文件user.ts添加以下代码

// 用户信息数据
function createUserList() {
    return [
      {
        userId: 1,
        userName: "admin",
        password: "123123",
        desc: "平台管理员",
        roles: ["平台管理员"],
        buttons: ["cuser.detail"], // 按钮权限标识
        routes: ["home"], // 路由权限标识
        token: "Admin Token"
      },
      {
        userId: 2,
        userName: "system",
        password: "123456",
        desc: "系统管理员",
        roles: ["系统管理员"],
        buttons: ["cuser.detail", "cuser.user"],
        routes: ["home"],
        token: "System Token"
      }
    ];
  }
  
  // 对外暴露一个数组:数组里面包含两个接口
  // 1. 登录接口  2. 获取用户信息接口
  export default [
    // 用户登录接口
    {
      url: "/api/user/login", // 请求地址
      method: "post", // 请求方式
      response: ({ body }) => {
        // 获取请求体携带过来的用户名与密码
        const { userName, password } = body;
        // 调用获取用户信息函数,用于判断是否有此用户
        const checkUser = createUserList().find(
          (item) => item.userName === userName && item.password === password
        );
        // 没有用户返回失败信息
        if (!checkUser) {
          return { code: 201, data: { message: "账号或者密码不正确" } };
        }
        // 如果有返回成功信息
        const { token } = checkUser;
        return { code: 200, data: { token } };
      }
    },
    // 获取用户信息
    {
      url: "/api/user/info",
      method: "get",
      response: (request) => {
        // 获取请求头携带token
        const token = request.headers.token;
        // 查看用户信息是否包含有次token用户
        const checkUser = createUserList().find((item) => item.token === token);
        // 没有返回失败信息
        if (!checkUser) {
          return { code: 201, data: { message: "获取用户信息失败" } };
        }
        // 如果有返回成功信息
        return { code: 200, data: { checkUser } };
      }
    }
  ];

 安装axios进行测试

npm i axios

在页面进行测试

import axios from "axios";
axios({
  url: "/api/user/login",
  method: "post",
  data: {
    userName: "admin",
    password: "123123"
  },
  headers: {
    "token": "weiuwieu"
  }
});

测试结果,响应结果为200,模拟请求成功

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
由于您并没有明确您想要的实现方式,以下是使用 Vue3 和 Vite 搭建 TodoList,包括使用 vite-plugin-mock 库进行后端模拟的步骤: 1. 新建一个 Vue3 项目 使用 Vue CLI 或手动搭建,具体步骤可以参考官方文档。 2. 安装 vite-plugin-mock项目根目录下执行: ``` npm install vite-plugin-mock --save-dev ``` 3. 创建 mock server 在项目根目录下创建一个 `mock` 文件夹,在文件夹内创建一个 `db.js` 文件。 `db.js` 用于存储模拟的数据,例如 Todos: ```js let todos = [ { id: 1, text: 'Buy milk', done: false }, { id: 2, text: 'Learn Vue', done: false } ]; export default { todos } ``` 在 `mock` 文件夹内再创建一个 `api.js` 文件。 `api.js` 定义每个接口的处理函数,例如获取所有 Todos 的接口: ```js import db from './db.js' export default { 'GET /api/todos': () => { return { code: 200, message: 'success', data: db.todos } } } ``` 4. 配置 ViteMock 插件 在 `vite.config.js` : ```js import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import mock from 'vite-plugin-mock' export default defineConfig({ plugins: [ vue(), mock({ mockPath: 'mock', injectCode: ` import db from './db.js' export default db;` }) ] }) ``` 这段代码,我们使用vite-plugin-mock,并指定了 mockPath 属性和 injectCode 属性。 mockPath 属性定义了我们的 mock 文件夹的路径; injectCode 属性用于在每个接口处理函数之前注入代码。在这里,我们将 db.js 的数据导入,并将其默认导出,以便在接口处理函数使用。 5. 编写 Vue3 组件 在 `src` 目录下新建 `TodoList.vue` 文件,实现一个基本的 TodoList: ```html <template> <div> <h1>Todo List</h1> <div> <input type="text" v-model="todoText" /> <button @click="addTodo">Add</button> </div> <div v-for="todo in todos" :key="todo.id"> <input type="checkbox" v-model="todo.done" @change="updateTodo" /> <span :class="{done: todo.done}">{{ todo.text }}</span> </div> </div> </template> <script> import { ref, onMounted } from 'vue' import { getTodos, updateTodo } from './api.js' export default { setup() { const todos = ref([]) const fetchTodos = async () => { const res = await getTodos() if (res && res.code === 200) { todos.value = res.data } } const todoText = ref('') const addTodo = async () => { if (todoText.value.trim()) { const newTodo = { id: Date.now(), text: todoText.value.trim(), done: false } todos.value.push(newTodo) todoText.value = '' } } const updateTodoStatus = async () => { const res = await updateTodo() if (!res || res.code !== 200) { alert('Update todo failed') } } onMounted(() => { fetchTodos() }) return { todos, todoText, addTodo, updateTodo: updateTodoStatus } } } </script> <style> .done { text-decoration: line-through; } </style> ``` 这个组件包含一个输入框和一个“添加”按钮,可以添加一个新的 Todo;还有一个列表,显示所有 Todos,每个 Todo 包含一个复选框和一个描述文本。 我们也在这里使用了从 api.js 导入的函数。通过这些函数,我们可以向后端服务器发送请求。在这里,由于我们使用了 mkock,因此请求实际上是与 db.js 的数据交互。 6. 启动项目 在终端执行: ``` npm run dev ``` 然后在浏览器打开 http://localhost:3000 查看 TodoList。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值