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 相关文章推荐
一次失败的jQuery优化尝试小结
Feb 06 Javascript
JS实用的动画弹出层效果实例
May 05 Javascript
jquery实现简单文字提示效果
Dec 02 Javascript
jQuery zTree树插件动态加载实例代码
May 11 jQuery
Vue.js最佳实践(五招助你成为vuejs大师)
May 04 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
Jul 25 Javascript
JS变量提升原理与用法实例浅析
May 22 Javascript
ES2020 已定稿,真实场景案例分析
May 25 Javascript
js实现点击按钮随机生成背景颜色
Sep 05 Javascript
Vue+Java+Base64实现条码解析的示例
Sep 23 Javascript
详解TypeScript中的类型保护
Apr 29 Javascript
vue中div禁止点击事件的实现
Apr 02 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
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
实例详解jQuery的无new构建
2016/08/02 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
Nodejs实现短信验证码功能
2017/02/09 NodeJs
JS实现的简单拖拽功能示例
2017/03/13 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
Vue中的Vux配置指南
2017/12/08 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
Python 中 list 的各项操作技巧
2017/04/13 Python
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
Python数组并集交集补集代码实例
2020/02/18 Python
详解django中Template语言
2020/02/22 Python
详解python中的lambda与sorted函数
2020/09/04 Python
如何编写python的daemon程序
2021/01/07 Python
讲座主持词
2014/03/20 职场文书
神农溪导游词
2015/02/11 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
pandas中对文本类型数据的处理小结
2021/11/01 Python
浅谈JavaScript作用域
2021/12/06 Javascript
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电