node+koa实现数据mock接口的方法


Posted in Javascript onSeptember 20, 2017

基于node+koa实现的mock数据接口,Koa需要v7.6.0以上node版本,低于此版本请先升级node

目录结构

node+koa实现数据mock接口的方法

// server.js
const Koa = require('koa');
const Router = require('koa-router');
const qs = require('qs');
const assert = require('assert');

const app = new Koa();
const router = new Router();

/**
 * 获取列表数据
 * @param {request} page 页数
 * @param {request} limit 每页数据条数
 * @param {response} errno 返回状态码 0 ==> 返回成功 1 ==> 有错误
 * @param {response} hasMore 是否有更多数据
 */
let listData = require('./mock/list/list.js');

router.get('/api/getlist/:page/:limit', function (ctx, next) {
  
  const page = ctx.params.page;
  const limit = ctx.params.limit;
  const maxPage = listData.length / limit;
  
  // 构造返回对象
  let res = {
    errno: 0,
    data: {
      hasMore: true,
      data: []
    }
  };

  // 如果超过最大页面数
  if ((page*1 + 1) >= maxPage) {
    res.data.hasMore = false;
  }
  res.data.data = listData.slice(page*limit, page*limit + limit);
   ctx.body = res;
});

/**
 * 获取详情数据
 * @param {request} id 商品id
 */
const detailData = require('./mock/detail/detail.js');

router.get('/api/getdetail/:id', function (ctx, next) {

  const id = ctx.params.id
  let res = {
    errno: 0,
    data: {
      data: []
    }
  }
  res.data.data = detailData;
  // todo...
  ctx.body = res;
});

/**
 * 提交评论
 * @param {request} id 用户id
 * @param {request} uid 商品id
 * @param {request} msg 评论内容
 */
router.post('/api/comment', function (ctx, next) {
  
  const params = qs.parse(ctx.req._parsedUrl.query);
  const id = params.id;
  const uid = params.uid;
  const msg = params.msg;
  if (id === undefined || uid === undefined || msg === undefined) {
    ctx.body = {
      errno: 1,
      msg: '缺少参数'
    }
  } else {
    // todo...
    ctx.body = {
      errno: 0,
      msg: '评论成功'
    }
  }
});

app
 .use(router.routes())
 .use(router.allowedMethods());
app.listen(3000);
console.log("server is running at http://localhost:3000/");

实际项目中,调用接口会遇到跨域的问题,解决的方式有多种,这里介绍如何在webpack中配置

module.exports = {
  ...

  devServer: {
    proxy: {
     // 将 `/api` 开头的 http 请求,都代理到 `localhost:3000` 上,由 koa 提供 mock 数据
     '/api': {
      target: 'http://localhost:3000',
      secure: false
     }
    }
    ...
  }
}

项目地址:https://github.com/daijingfeng/mock-server

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
alert中断settimeout计时功能
Jul 26 Javascript
js获取select选中的option的text示例代码
Dec 19 Javascript
jquery 新建的元素事件绑定问题解决方案
Jun 12 Javascript
js实现tab切换效果实例
Sep 16 Javascript
详解AngularJS 模态对话框
Apr 07 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
Nov 10 Javascript
javascript构造函数以及原型对象的理解
Jan 13 Javascript
jQuery.Form上传文件操作
Feb 05 Javascript
详解node如何让一个端口同时支持https与http
Jul 04 Javascript
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
原生javascript实现连连看游戏
Jan 03 Javascript
layui 上传文件_批量导入数据UI的方法
Sep 23 Javascript
详解angularjs popup-table 弹出框表格指令
Sep 20 #Javascript
ES6中Array.includes()函数的用法
Sep 20 #Javascript
微信小程序视图template模板引用的实例详解
Sep 20 #Javascript
highcharts 在angular中的使用示例代码
Sep 20 #Javascript
jQuery实现可兼容IE6的滚动监听功能
Sep 20 #jQuery
Bootstrap Table快速完美搭建后台管理系统
Sep 20 #Javascript
VUE页面中加载外部HTML的示例代码
Sep 20 #Javascript
You might like
php过滤XSS攻击的函数
2013/11/12 PHP
WordPress网站性能优化指南
2015/11/18 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
Easy.Ajax 部分源代码 支持文件上传功能, 兼容所有主流浏览器
2011/02/24 Javascript
Jquery 的扩展方法总结
2011/10/01 Javascript
JS阻止冒泡事件以及默认事件发生的简单方法
2014/01/17 Javascript
WEB前端开发都应知道的jquery小技巧及jquery三个简写
2015/11/15 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
jQuery接受后台传递的List的实例详解
2017/08/02 jQuery
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
js+html获取系统当前时间
2017/11/10 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
vue裁切预览组件功能的实现步骤
2018/05/04 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
layui type2 通过url给iframe子页面传值的例子
2019/09/06 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
用Python实现换行符转换的脚本的教程
2015/04/16 Python
Python中random模块用法实例分析
2015/05/19 Python
python实现旋转和水平翻转的方法
2018/10/25 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
香港现代设计家具品牌:Ziinlife Furniture
2018/11/13 全球购物
西班牙购买行李箱和背包网站:Maletas Greenwich
2019/10/08 全球购物
如何启动时不需输入用户名与密码
2014/05/09 面试题
高二美术教学反思
2014/01/14 职场文书
总经理助理职责
2014/02/04 职场文书
幼儿园新年寄语
2014/04/03 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
python基础之while循环语句的使用
2021/04/20 Python
利用JavaScript写一个简单计算器
2021/11/27 Javascript
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Win11安装升级时提示“该电脑必须支持安全启动”
2022/04/19 数码科技