Vue3+TypeScript集成Mock

安装依赖

bash 复制代码
pnpm install -D vite-plugin-mock mock.js

注册插件

vite.config.ts

ts 复制代码
...
import { defineConfig } from 'vite'
import { viteMockServe } from 'vite-plugin-mock'
...
export default defineConfig(() => {
  return {
    plugins: [
      vue(),
      viteMockServe({
        // mockPath: 'mock', // 默认
        enable: true,
      }),
    ],
  }
})

原代码 defineConfig({...}) 现在要改成 defineConfig(() => {return{...}}) 参考网址:github.com/vbenjs/vite...

创建假接口

/mock/user.ts

ts 复制代码
// 用户信息数据,createUserList:此函数执行会返回一个数组,数组里面包含两个用户信息
function createUserList() {
  return [
    {
      userId: 1,
      avatar:
        'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
      username: 'admin',
      password: '111111',
      desc: '平台管理员',
      roles: ['平台管理员'],
      buttons: ['cuser.detail'],
      routes: ['home'],
      token: 'Admin Token',
    },
    {
      userId: 2,
      avatar:
        'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
      username: 'system',
      password: '111111',
      desc: '系统管理员',
      roles: ['系统管理员'],
      buttons: ['cuser.detail', 'cuser.user'],
      routes: ['home'],
      token: 'System Token',
    },
  ]
}
//对外暴露一个数组:数组里面包含两个接口
//登录假的接口
//获取用户信息的假的接口
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

bash 复制代码
pnpm i axios

使用测试

/main.ts 临时测试

ts 复制代码
...
import axios from 'axios'
axios({
  url: '/api/user/login',
  method: 'post',
  data: {
    username: 'admin',
    password: '111111'
  }
})
app.mount('#app')
相关推荐
咖啡の猫5 分钟前
TypeScript-Babel
前端·javascript·typescript
Kagol2 小时前
🎉TinyPro v1.4.0 正式发布:支持 Spring Boot、移动端适配、新增卡片列表和高级表单页面
前端·typescript·开源
C_心欲无痕12 小时前
ts - tsconfig.json配置讲解
linux·前端·ubuntu·typescript·json
老前端的功夫18 小时前
TypeScript 类型魔术:模板字面量类型的深层解密与工程实践
前端·javascript·ubuntu·架构·typescript·前端框架
孟无岐18 小时前
【Laya】Browser 使用说明
typescript·游戏引擎·游戏程序·laya
@大迁世界19 小时前
TypeScript 的本质并非类型,而是信任
开发语言·前端·javascript·typescript·ecmascript
Hao_Harrision21 小时前
50天50个小项目 (React19 + Tailwindcss V4) ✨| ThreeDBackgroundBoxes(3D背景盒子组件)
前端·3d·typescript·react·tailwindcss·vite7
C_心欲无痕1 天前
ts - 关于Object、object 和 {} 的解析与区别
开发语言·前端·javascript·typescript
C_心欲无痕1 天前
ts - 类型收窄
前端·typescript
Kagol1 天前
深入浅出 TinyEditor 富文本编辑器系列2:快速开始
前端·typescript·开源