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 相关文章推荐
javascript显示选择目录对话框的代码
Nov 10 Javascript
javascript 哈希表(hashtable)的简单实现
Jan 20 Javascript
jquery 学习之一 对象访问
Nov 23 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
jQuery判断对象是否存在的方法
Feb 05 Javascript
TypeScript 学习笔记之基本类型
Jun 19 Javascript
Bootstrap如何创建表单
Oct 21 Javascript
vue页面使用阿里oss上传功能的实例(一)
Aug 09 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
Jan 10 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
vue中使用v-model完成组件间的通信
Aug 22 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 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
Php无限级栏目分类读取的实现代码
2014/02/19 PHP
PHP中is_dir()函数使用指南
2015/05/08 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
jQuery 页面 Mask实现代码
2010/01/09 Javascript
Jquery iframe内部出滚动条
2010/02/11 Javascript
为Extjs加加速(javascript加速)
2010/08/19 Javascript
加速IE的Javascript document输出的方法
2010/12/02 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
使用命令对象代替switch语句的写法示例
2015/02/28 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
Bootstrap导航条学习使用(二)
2017/02/08 Javascript
解决vue中虚拟dom,无法实时更新的问题
2018/09/15 Javascript
vue项目中监听手机物理返回键的实现
2020/01/18 Javascript
原生js实现瀑布流效果
2020/03/09 Javascript
ptyhon实现sitemap生成示例
2014/03/30 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
python使用筛选法计算小于给定数字的所有素数
2018/03/19 Python
pygame实现俄罗斯方块游戏(基础篇1)
2019/10/29 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
css图标制作教程制作云图标
2014/01/19 HTML / CSS
CSS3 :not()选择器实现最后一行li去除某种css样式
2016/10/19 HTML / CSS
如何使用localstorage代替cookie实现跨域共享数据问题
2018/04/18 HTML / CSS
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
高中生学习计划书
2014/09/15 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
免职通知
2015/04/23 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
把77A收信机改造成收音机
2022/04/05 无线电