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使用查询手册
Mar 07 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
Sep 04 Javascript
event.X和event.clientX的区别分析
Oct 06 Javascript
如何使用Javascript正则表达式来格式化XML内容
Jul 04 Javascript
使用jquery实现鼠标滑过弹出更多相关信息层附源码下载
Nov 23 Javascript
最全面的JS倒计时代码
Sep 17 Javascript
Angular.JS实现无限级的联动菜单(使用demo)
Feb 08 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
Aug 25 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
详解webpack引用jquery(第三方模块)的三种办法
Aug 21 jQuery
微信浏览器下拉黑边解决方案 wScroollFix
Jan 21 Javascript
Node.js web 应用如何封装到Docker容器中
Sep 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
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
php用header函数实现301跳转代码实例
2013/11/25 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
YII Framework框架教程之使用YIIC快速创建YII应用详解
2016/03/15 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
python 使用装饰器并记录log的示例代码
2019/07/12 Python
python爬虫 正则表达式解析
2019/09/28 Python
Python 下载及安装详细步骤
2019/11/04 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
如何利用python进行时间序列分析
2020/08/04 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
目标责任书范文
2014/04/14 职场文书
讲解员培训方案
2014/05/04 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
城管个人总结
2015/02/28 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android