使用Mockjs模拟接口实现增删改查、分页及多条件查询

yizhihongxing

使用Mockjs模拟接口实现增删改查、分页及多条件查询可以分为以下步骤:

  1. 安装Mock.js库

使用npm安装Mock.js库:npm install mockjs --save-dev

  1. 创建Mock接口数据

在项目中创建一个mock文件夹,其中的api.js文件用于存放Mock接口数据,具体代码如下:

import Mock from 'mockjs'

const data = Mock.mock({
  'list|10': [{
    'id|+1': 1,
    'name': '@cname',
    'age|10-30': 1,
    'gender|1': ['男', '女'],
    'email': '@EMAIL',
    'address': '@county(true)',
    'job|1': ['前端工程师', '后端工程师']
  }]
})

// 查询列表接口
Mock.mock('/api/list', 'get', () => {
  return {
    code: 200,
    message: '查询成功',
    data: data.list
  }
})

// 新增接口
Mock.mock('/api/add', 'post', (option) => {
  const dataItem = JSON.parse(option.body)
  dataItem.id = data.list.length + 1
  data.list.push(dataItem)
  return {
    code: 200,
    message: '新增成功',
    data: dataItem
  }
})

// 删除接口
Mock.mock('/api/delete', 'post', (option) => {
  const id = JSON.parse(option.body).id
  const index = data.list.findIndex(item => item.id === id)
  data.list.splice(index, 1)
  return {
    code: 200,
    message: '删除成功'
  }
})

// 更新接口
Mock.mock('/api/update', 'post', (option) => {
  const dataItem = JSON.parse(option.body)
  const index = data.list.findIndex(item => item.id === dataItem.id)
  data.list.splice(index, 1, dataItem)
  return {
    code: 200,
    message: '更新成功'
  }
})

// 分页查询接口
Mock.mock('/api/page', 'get', (option) => {
  const { current = 1, pageSize = 10 } = option.query
  const start = (current - 1) * pageSize
  const end = current * pageSize
  const list = data.list.slice(start, end)
  return {
    code: 200,
    message: '查询成功',
    data: {
      list,
      total: data.list.length
    }
  }
})

// 多条件查询接口
Mock.mock(RegExp('/api/search.*'), 'get', (option) => {
  const { name, age, gender } = option.query
  const list = data.list.filter(item => {
    let flag = true
    if (name && item.name.indexOf(name) === -1) {
      flag = false
    }
    if (age && item.age !== parseInt(age)) {
      flag = false
    }
    if (gender && item.gender !== gender) {
      flag = false
    }
    return flag
  })
  return {
    code: 200,
    message: '查询成功',
    data: list
  }
})

以上代码中创建了查询列表接口、新增接口、删除接口、更新接口、分页查询接口和多条件查询接口,其中Mock.mock()方法的三个参数分别为请求的URL、请求的方式和返回的数据。

  1. 编写请求代码

在项目中编写请求代码,具体代码如下:

import axios from 'axios'

// 查询列表
axios.get('/api/list').then(res => {
  console.log(res.data)
})

// 新增
axios.post('/api/add', {
  name: '小明',
  age: 23,
  gender: '男',
  email: 'xiaoming@qq.com',
  address: '广东省深圳市南山区',
  job: '前端工程师'
}).then(res => {
  console.log(res.data)
})

// 删除
axios.post('/api/delete', { id: 1 }).then(res => {
  console.log(res.data)
})

// 更新
axios.post('/api/update', {
  id: 2,
  name: '小明',
  age: 24,
  gender: '男',
  email: 'xiaoming@qq.com',
  address: '广东省深圳市南山区',
  job: '前端工程师'
}).then(res => {
  console.log(res.data)
})

// 分页查询
axios.get('/api/page', {
  params: {
    current: 2,
    pageSize: 3
  }
}).then(res => {
  console.log(res.data)
})

// 多条件查询
axios.get('/api/search', {
  params: {
    name: '小明',
    age: 24,
    gender: '男'
  }
}).then(res => {
  console.log(res.data)
})

以上代码中的Axios库用于发起请求,其中请求的URL与mock接口数据中的URL一致,请求的方式根据mock接口数据中的方式来确定,返回的数据是mock接口数据中返回的数据。

上述示例仅作为参考,具体实现方式根据实际情况可能会有所不同。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Mockjs模拟接口实现增删改查、分页及多条件查询 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JS数组降维的实现Array.prototype.concat.apply([], arr)

    首先,我们来解释一下该方法中用到的 Array.prototype.concat.apply([], arr) 这个表达式。 Array.prototype.concat.apply 是一个数组方法,用来连接两个或多个数组。在这个方法中使用了 apply 方法,因为 apply 可以使一个函数调用时,能够改变函数体内 this 的指向。 而 [] 表示作为第…

    Vue 2023年5月27日
    00
  • vue项目中main.js使用方法详解

    当我们创建一个Vue项目时,main.js是一个非常重要的入口文件,其作用是引入Vue库,创建Vue实例,并将Vue实例挂载到指定的DOM元素上。下面详细讲解main.js使用方法。 1. 引入Vue库和App.vue组件 首先,我们需要在main.js文件中引入所需的依赖:Vue库和App.vue组件。示例代码如下: import Vue from ‘vu…

    Vue 2023年5月27日
    00
  • Vue拖拽排序组件Vue-Slicksort解读

    下面是详细讲解“Vue拖拽排序组件Vue-Slicksort解读”的完整攻略。 概述 Vue-Slicksort 是一个可拖拽排序组件,其支持排序项的拖拽、交换、插入、删除之类的操作,非常适用于管理后台等需要排序功能的场景。 Vue-Slicksort 的主要特点是高度可定制和易于配置。它封装了一个 Drag and Drop 库,可以直接应用在 Vue.j…

    Vue 2023年5月29日
    00
  • 如何去除富文本中的html标签及vue、react、微信小程序中的过滤器

    下面我将为你分享如何去除富文本中的html标签及vue、react、微信小程序中的过滤器的攻略。 去除富文本中的html标签 方法一:使用正则表达式 在 JavaScript 中,我们可以使用正则表达式来去除富文本中的 html 标签。具体实现代码如下: function removeHTMLTag(str) { str = str.replace(/&lt…

    Vue 2023年5月27日
    00
  • 在vue中对数组值变化的监听与重新响应渲染操作

    在Vue中监听和重新响应渲染数组的变化操作主要是通过Vue提供的Array原型方法进行实现,下面是详细步骤: 步骤一:在vue组件中定义数组 在Vue的组件中,需要先定义要监听的数组,可以在data()中定义一个数组类型的变量,例如: data() { return { list: ["apple", "banana"…

    Vue 2023年5月28日
    00
  • Springboot实现Shiro整合JWT的示例代码

    下面来详细讲解如何实现Spring Boot整合Shiro和JWT的示例代码。 简介 Shiro是一个强大的安全框架,提供了多种安全特性,例如:认证、授权、加密等等。JWT是一种轻量级的认证机制,它可以使用JSON格式存储用户信息,并且可以在客户端和服务端之间传递。 本文将介绍如何通过Spring Boot实现Shiro整合JWT的示例代码。 示例1:环境搭…

    Vue 2023年5月28日
    00
  • vue上传图片文件的多种实现方法

    下面是关于“vue上传图片文件的多种实现方法”的完整攻略。 1. 前言 在现代Web应用程序中,上传文件是非常常见的需求之一。在Vue.js中,我们可以利用一些第三方库(如 axios 和 vue-resource)来实现上传文件的功能。本篇攻略将会探讨Vue.js中上传图片文件的多种实现方法。 2. 使用FormData对象实现上传 FormData是一种…

    Vue 2023年5月28日
    00
  • 利用Vue的v-for和v-bind实现列表颜色切换

    下面是利用Vue的v-for和v-bind实现列表颜色切换的完整攻略。 1. 简介 v-for和v-bind是Vue中两条非常常用的指令。其中,v-for用于循环渲染一组数据,v-bind则是将数据绑定到HTML元素的属性上,可以让我们实现一些动态的效果。本攻略将通过v-for和v-bind的配合实现一个列表的颜色切换效果。 2. 实现步骤 2.1 新建Vu…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部