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 使用手册(二)
Sep 23 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
javascript中caller和callee详解
Aug 10 Javascript
JS函数多个参数默认值指定方法分析
Nov 28 Javascript
如何在 Vue.js 中使用第三方js库
Apr 25 Javascript
webpack处理 css\less\sass 样式的方法
Aug 21 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
Oct 04 Javascript
vue.js template模板的使用(仿饿了么布局)
Aug 13 Javascript
微信小程序实现星星评价效果
Nov 02 Javascript
js中forEach,for in,for of循环的用法示例小结
Mar 14 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
Jul 17 Javascript
uni-app使用countdown插件实现倒计时
Nov 01 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
4.与数据库的连接
2006/10/09 PHP
PHP 日期加减的类,很不错
2009/10/10 PHP
php绘制一个扇形的方法
2015/01/24 PHP
PHP6连接SQLServer2005的三部曲
2016/04/15 PHP
php异常处理捕获错误整理
2019/09/23 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
[01:56]《DOTA2》中文配音CG
2013/04/22 DOTA
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
python数据结构之链表的实例讲解
2017/07/25 Python
python如何修改装饰器中参数
2018/03/20 Python
python实现月食效果实例代码
2019/06/18 Python
使用pyqt 实现重复打开多个相同界面
2019/12/13 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
python如何处理程序无法打开
2020/06/16 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
住房公积金接收函
2014/01/09 职场文书
产品质量承诺书范文
2014/03/27 职场文书
领导参观欢迎词
2015/01/26 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
借钱欠条怎么写
2015/07/03 职场文书
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL
Redis基本数据类型String常用操作命令
2022/06/01 Redis