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之网页换肤实现代码
Apr 30 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
Dec 13 Javascript
Ajax请求在数据量大的时候出现超时的解决方法
Feb 27 Javascript
jQuery中click事件的定义和用法
Dec 20 Javascript
js实现非常棒的弹出div
Oct 06 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
Aug 15 jQuery
微信小程序 swiper组件构建轮播图的实例
Sep 20 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
May 09 Javascript
基于vue中keep-alive缓存问题的解决方法
Sep 21 Javascript
原生JS实现的跳一跳小游戏完整实例
Jan 27 Javascript
JS实现简易日历效果
Jan 25 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
中篇:安装及配置PHP
2006/12/13 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
JS实现点击上移下移LI行数据的方法
2015/08/05 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
python实现简单加密解密机制
2019/03/19 Python
python爬虫爬取笔趣网小说网站过程图解
2019/11/18 Python
PyCharm License Activation激活码失效问题的解决方法(图文详解)
2020/03/12 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
python中pop()函数的语法与实例
2020/12/01 Python
size?瑞典:英国伦敦的球鞋精品店
2018/03/01 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
一些Unix笔试题和面试题
2012/09/25 面试题
人力资源专业推荐信
2013/11/29 职场文书
党员干部公开承诺书
2014/03/26 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
毕业实习单位意见
2015/06/04 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
2016年幼儿园庆六一开幕词
2016/03/04 职场文书