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 相关文章推荐
js类中获取外部函数名的方法与代码
Sep 12 Javascript
jquery 批量上传图片实现代码
Jan 28 Javascript
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
Feb 12 Javascript
IE浏览器中图片onload事件无效的解决方法
Apr 29 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
Oct 30 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
Nov 28 Javascript
使用JavaScript进行表单校验功能
Aug 01 Javascript
解决vue点击控制单个样式的问题
Sep 05 Javascript
javascript将非数值转换为数值
Sep 13 Javascript
javascript实现图片轮播代码
Jul 09 Javascript
详解Vue中的Props与Data细微差别
Mar 02 Javascript
js实现带有动画的返回顶部
Aug 09 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
如何给phpadmin一个保护
2006/10/09 PHP
php调用C代码的实现方法
2014/03/11 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
基于PHP实现栈数据结构和括号匹配算法示例
2017/08/10 PHP
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
layui实现三级联动效果
2019/07/26 Javascript
[01:15]PWL S2开团时刻第二期——他们杀 我就白给
2020/11/25 DOTA
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python编码爬坑指南(必看)
2016/06/10 Python
Django自定义用户认证示例详解
2018/03/14 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
python 实现对文件夹中的图像连续重命名方法
2018/10/25 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
解决python 读取excel时 日期变成数字并加.0的问题
2019/10/08 Python
pygame实现五子棋游戏
2019/10/29 Python
Python语法之精妙的十个知识点(装B语法)
2020/01/18 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
大学生创业计划书的用途
2014/01/08 职场文书
教师职称自我鉴定
2014/02/12 职场文书
学习决心书范文
2014/03/11 职场文书
腾讯广告词
2014/03/19 职场文书
活动总结报告范文
2014/05/04 职场文书
团队拓展活动方案
2014/08/28 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
数学复习课教学反思
2016/02/18 职场文书
Requests什么的通通爬不了的Python超强反爬虫方案!
2021/05/20 Python