资讯专栏INFORMATION COLUMN

node+koa实现数据mock

Barry_Ng / 1274人阅读

摘要:基于实现的数据接口,需要以上版本,低于此版本请先升级目录结构获取列表数据页数每页数据条数返回状态码返回成功有错误是否有更多数据构造返回对象如果超过最大页面数获取详情数据商品提交评论用户商品评论内容缺少参数评论成功实际项目中,调用接口会遇到

基于node+koa实现的mock数据接口,Koa需要v7.6.0以上node版本,低于此版本请先升级node
目录结构

// 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
喜欢的朋友就赏个star吧

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/91984.html

相关文章

  • 从零开始做Vue前端架构(4)

    摘要:前言上一篇我们遇到少年,是不是忘了的警告,这一篇我们就来解决这个问题。总结通过实现前后端分离,并且使用来更方便的模拟数据。下一篇,我们创建发布环境下的配置文件,并且看看怎么优化产出的代码的从零开始做前端架构项目完整代码前端架构子咻 前言 上一篇我们遇到少年,是不是忘了npm run mock?的警告,这一篇我们就来解决这个问题。 开发 一、安装包 安装koa和一系列的包(我们用的是ko...

    xuweijian 评论0 收藏0
  • 造轮子:用Node写一个API Mock

    摘要:使用写一个服务实现思路读取文件夹遍历文件尝试导入文件内容将文件内容拼接成一个对象将请求类型空格请求地址作为当收到的请求能在对象中找到就返回结果找不到结果返回获取文件内容同步读取文件夹对象汇总遍历文件只读取文件容错,可能文件内容有问题只合并对 使用Node写一个Mock服务 实现思路: 读取mock文件夹 遍历.js文件 尝试导入文件内容 将文件内容拼接成一个对象 将请求类型 + 空格...

    DevTTL 评论0 收藏0
  • 前端开发如何做好本地接口模拟

    摘要:前端开发如何做好本地接口模拟之前有写过一篇本地化接口模拟前后端并行开发,讲到过本地接口模拟,但不太细致。有哪些途径本地接口模拟一般分为工具层面和代码层面。因为本地接口模拟功能主要是针对的返回值为格式的异步请求,所以这种方式主要用文件。 前端开发如何做好本地接口模拟 之前有写过一篇 本地化接口模拟、前后端并行开发,讲到过本地接口模拟,但不太细致。这次细细的说说本地接口模拟。 1. 有什么...

    ACb0y 评论0 收藏0
  • node服务端渲染(完整demo)

    摘要:简介搭建多页面服务端渲染技术点搭建服务创建页面路由模板引擎组合打包多页面端异步请求服务端日志打印项目源码运行一现代服务端渲染的由来服务端渲染概念是指,浏览器向服务器发出请求页面,服务端将准备好的模板和数据组装成完整的返回给浏览器展示前端后 简介 nodejs搭建多页面服务端渲染 技术点 koa 搭建服务 koa-router 创建页面路由 nunjucks 模板引擎组合html ...

    cheukyin 评论0 收藏0
  • 适合初学者的koa2+mongodb初体验

    摘要:前言笔者的前端开发已经有些时日了,对于一直保留着最初的恐惧,倘若一座不可跨越的高山,思前想后终于迈出最后一步,踏入了开拓自己视野的新视界,希望在看这篇文章的你可以一起跟我动手尝试。面向的下一代框架。由团队打造,特点优雅简洁灵活体积小。 showImg(https://segmentfault.com/img/bVbuorM?w=1514&h=568); 前言      笔者的前端开发已...

    Jacendfeng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<