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 相关文章推荐
限制文本框输入N个字符的js代码
May 13 Javascript
js获取php变量的实现代码
Aug 10 Javascript
JavaScript分秒倒计时器实现方法
Feb 02 Javascript
浅谈javascript中的加减时间
Jul 12 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
Mar 08 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
Oct 17 Javascript
原生JS实现获取及修改CSS样式的方法
Sep 04 Javascript
cdn模式下vue的基本用法详解
Oct 07 Javascript
详解ES6中的 Set Map 数据结构学习总结
Nov 06 Javascript
js canvas画布实现高斯模糊效果
Nov 27 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
Feb 11 Vue.js
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
Apr 13 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
一个ftp类(ini.php)
2006/10/09 PHP
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
分享PHP入门的学习方法
2007/01/02 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
2013/05/06 PHP
php自动加载机制的深入分析
2013/06/08 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
javascript 冒号 使用说明
2009/06/06 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
vue-cli2 构建速度优化的实现方法
2019/01/08 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
python读取注册表中值的方法
2013/04/08 Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
2014/04/10 Python
Python实现的数据结构与算法之队列详解
2015/04/22 Python
Python聊天室实例程序分享
2016/01/05 Python
详解python字节码
2018/02/07 Python
python实现三维拟合的方法
2018/12/29 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
五分钟带你搞懂python 迭代器与生成器
2020/08/30 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
拓展策划方案
2014/06/03 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
行为习惯主题班会
2015/08/14 职场文书
Echarts如何重新渲染实例详解
2022/05/30 Javascript