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 相关文章推荐
JavaScript表达式:URL 协议介绍
Mar 10 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
Sep 06 Javascript
Javascript模块化编程详解
Dec 01 Javascript
jQuery实现提示密码强度的代码
Jul 15 Javascript
用Move.js配合创建CSS3动画的入门指引
Jul 22 Javascript
js简单实现Select互换数据的方法
Aug 17 Javascript
AngularJs 动态加载模块和依赖
Sep 15 Javascript
jQuery实现自动调用和触发某个事件的方法
Nov 18 Javascript
JS匿名函数类生成方式实例分析
Nov 26 Javascript
微信小程序 实例开发总结
Apr 26 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
Dec 13 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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 和 XML: 使用expat函数(一)
2006/10/09 PHP
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
symfony表单与页面实现技巧
2015/01/26 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
js 判断 enter 事件
2009/02/12 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
2013/12/13 Javascript
了不起的node.js读书笔记之例程分析
2014/12/22 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
20分钟轻松创建自己的Bootstrap站点
2016/05/12 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
js倒计时显示实例
2016/12/11 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
简单了解vue中的v-if和v-show的区别
2019/10/08 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
python实现俄罗斯方块
2018/06/26 Python
Python中print函数简单使用总结
2019/08/05 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
简洁的英文求职信范文
2014/05/03 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
JavaScript实现简单的音乐播放器
2022/08/14 Javascript