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 相关文章推荐
动态修改DOM 里面的 id 属性的弊端分析
Sep 03 Javascript
JavaScript 利用StringBuffer类提升+=拼接字符串效率
Nov 24 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
Jul 02 Javascript
js实现局部页面打印预览原理及示例代码
Jul 03 Javascript
javascript 面向对象封装与继承
Nov 27 Javascript
js制作简易年历完整实例
Jan 28 Javascript
Javascript如何判断数据类型和数组类型
Jun 22 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
[js高手之路]图解javascript的原型(prototype)对象,原型链实例
Aug 28 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
Oct 24 Javascript
vue项目接口域名动态获取操作
Aug 13 Javascript
vue使用过滤器格式化日期
Jan 20 Vue.js
详解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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
Array of country list in PHP with Zend Framework
2011/10/17 PHP
thinkphp判断访客为手机端或PC端的方法
2014/11/24 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
解决PHP 7编译安装错误:cannot stat ‘phar.phar’: No such file or directory
2017/02/25 PHP
json 定义
2008/06/10 Javascript
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
详解JavaScript语言的基本语法要求
2015/11/20 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
python处理二进制数据的方法
2015/06/03 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
python实现连续图文识别
2018/12/18 Python
python自动发微信监控报警
2019/09/06 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
2020/01/20 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
GC是什么?为什么要有GC?
2013/12/08 面试题
医学生求职自荐信
2013/10/25 职场文书
考核工作实施方案
2014/03/30 职场文书
《春到梅花山》教学反思
2014/04/16 职场文书
自强之星事迹材料
2014/05/12 职场文书
2014年医院工作总结
2014/11/20 职场文书
2015年小学生暑假总结
2015/07/13 职场文书
聘任合同书
2015/09/21 职场文书
党风廉政承诺书2016
2016/03/25 职场文书