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 相关文章推荐
理清apply(),call()的区别和关系
Aug 14 Javascript
js动画(animate)简单引擎代码示例
Dec 04 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
Oct 22 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
Jul 09 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
详解使用路由延迟加载 Angular 模块
Oct 12 Javascript
vue项目中jsonp跨域获取qq音乐首页推荐问题
May 30 Javascript
Vue EventBus自定义组件事件传递
Jun 25 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
Aug 17 Javascript
微信小程序登录session的使用
Mar 17 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 Javascript
谈谈JavaScript令人迷惑的==与+
Aug 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简单隔行变色功能实现代码
2016/07/09 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
JavaScript prototype对象的属性说明
2010/03/13 Javascript
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
javascript解析json实例详解
2014/11/05 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
javascript跨域总结之window.name实现的跨域数据传输
2015/11/01 Javascript
Bootstarp风格的toggle效果分享
2016/02/23 Javascript
JS高级运动实例分析
2016/12/20 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
AngularJs 终极购物车(实例讲解)
2017/11/08 Javascript
浅析Python的Django框架中的Memcached
2015/07/23 Python
python实现监控某个服务 服务崩溃即发送邮件报告
2018/06/21 Python
如何在Django中设置定时任务的方法示例
2019/01/18 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
Python如何实现动态数组
2019/11/02 Python
基于python的列表list和集合set操作
2019/11/24 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
Python使用qrcode二维码库生成二维码方法详解
2020/02/17 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
旅游管理实习自我鉴定
2013/09/29 职场文书
优秀毕业生自荐信
2014/06/10 职场文书
食堂标语大全
2014/06/11 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
党的群众路线教育实践活动批评与自我批评范文
2014/10/16 职场文书
退货证明模板
2015/06/23 职场文书
新闻稿件写作范文
2015/07/18 职场文书
化验室安全管理制度
2015/08/06 职场文书
商场广播稿范文
2015/08/19 职场文书