网易首页 > 网易号 > 正文 申请入驻

五分钟教你用NodeJS手写一个Mock数据服务器

0
分享至

作者:徐小夕来源:趣谈前端

对于前端开发者而言,javascript正扮演着越来越重要的地位,它不仅能为浏览器端赋能,在web服务器方面也有很大的价值(我们可以用nodeJS来写服务端代码,启动web服务器),因此本文所要描述的,便是javascript在服务端的应用。我将介绍如何使用nodeJS来搭建一个mock服务器,方便前端自定义mock数据请求,提高前端开发的主观能动性和对项目健壮性的探索。

我们将学到

  • koa基本使用
  • koa-router的基本用法
  • koa-logger的使用
  • glob支持文件遍历查寻
  • node几个核心api的使用
  • 使用nodemon做自动重启

mock服务器基本设计思路

通过目录路径和服务端api的映射关系来实现我们的api访问,比如我们访问接口/api/article/122,我们只需要在mock服务器目录的api的article目录下,创建122.json文件即可,json文件的数据可以自定义,方便前端调试。

具体实现

1.搭建一个node服务

  • const Koa = require('koa');
    const app = new Koa();
    app.listen(3000)

2.注册路由 我们使用koa-router来实现后台服务的路由功能,并通过koa提供的上下文ctx将读取到的数据返回给前端:

  • const Koa = require('koa');
    const Router = require('koa-router');
    const app = new Koa();
    const router = new Router({prefix: '/api'});
    router.get('/name', (ctx, next) => {
    ctx.body = {
    name: 'xuxiaoxi'

    app
    .use(router.routes())
    .use(router.allowedMethods());
    app.listen(3000)

这样我们就能实现一个勉强能用的基本的后台api服务器了,当我们请求/api/name时,会返回相应的数据给前台,这一步是我们实现mock服务的关键一步,接下来我们具体来实现目录的遍历和api的自动注册。

3.自动注册api接口并返回数据 我们将在这个阶段实现api服务的自动注册,这里我们使用glob这个第三方模块来遍历目录,并通过node的fs模块读取api文件的数据并返回给前台。glob的使用很简单,感兴趣的朋友可以自行学习,这里就不做过多介绍了。具体实现如下:

  • const Koa = require('koa');
    const Router = require('koa-router');
    const glob = require("glob");
    const { resolve } = require('path');
    const fs = require('fs');
    const app = new Koa();
    const router = new Router({prefix: '/api'});
    // 注册路由
    glob.sync(resolve('./api', "**/*.json")).forEach((item, i) => {
    let apiJsonPath = item && item.split('/api')[1];
    let apiPath = apiJsonPath.replace('.json', '');
    router.get(apiPath, (ctx, next) => {
    try {
    let jsonStr = fs.readFileSync(item).toString();
    ctx.body = {
    data: JSON.parse(jsonStr),
    state: 200,
    type: 'success' // 自定义响应体
    }catch(err) {
    ctx.throw('服务器错误', 500);


    app
    .use(router.routes())
    .use(router.allowedMethods());
    app.listen(3000);

添加控制台日志 我们使用koa-logger实现在终端打印node日志,方便调试,虽然这不是该文章的重点,但是对于想做node开发的前端从业者,还是很有必要了解的。

  • const logger = require('koa-logger')
    app.use(logger())

这样,我们每个请求都会在终端打印出来。

路由映射文件的生成 该功能也不是本文的重点,但是会极大的方便前端开发者调试请求,因为如果api路径很长,我们需要一个个查找,但是有了这个map文件,我们只需要拷贝自动生成的路径即可。具体实现如下:


  • const routerMap = {}; // 存放路由映射
    // 注册路由
    glob.sync(resolve('./api', "**/*.json")).forEach((item, i) => {

    // 记录路由
    routerMap[apiJsonPath] = apiPath;
    fs.writeFile('./routerMap.json', JSON.stringify(routerMap, null , 4), err => {
    if(!err) {
    console.log('路由地图生成成功!')

基本目录结构

本文转载自微信公众号「趣谈前端」

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
1.07亿镑纪录签约,切尔西为何愿卖恩佐?

1.07亿镑纪录签约,切尔西为何愿卖恩佐?

浮萍足球
2026-01-20 04:14:08
太惨了!一个机器人机枪手干掉了俄军一个连

太惨了!一个机器人机枪手干掉了俄军一个连

山间听雨
2026-01-18 18:58:17
美国华人直言:中国手机扫码支付是最不智能的发明!

美国华人直言:中国手机扫码支付是最不智能的发明!

阿伧说事
2026-01-20 12:53:01
脊柱断裂、前夫已死,63岁韦唯近况曝光,已然走上一条上坡路

脊柱断裂、前夫已死,63岁韦唯近况曝光,已然走上一条上坡路

林雁飞
2026-01-20 15:05:56
中国乒协确认国家队和青年队教练员名单

中国乒协确认国家队和青年队教练员名单

乒乓世界
2026-01-20 17:12:29
云南罗平一4个多月女婴在母婴店泡药浴后离世, 母亲发声

云南罗平一4个多月女婴在母婴店泡药浴后离世, 母亲发声

观威海
2026-01-20 09:02:03
路由器背面的USB接口别闲置!5个强大用法,不用真的亏大了

路由器背面的USB接口别闲置!5个强大用法,不用真的亏大了

小柱解说游戏
2026-01-20 09:37:30
U23国足意外之喜:日本没想象中强,险遭韩国翻盘,做好2点可夺冠

U23国足意外之喜:日本没想象中强,险遭韩国翻盘,做好2点可夺冠

国足风云
2026-01-20 21:30:47
2-4:加时赛遭淘汰

2-4:加时赛遭淘汰

绿茵情报局
2026-01-20 17:00:44
里皮附体!安东尼奥用兵如神,气走越南主帅,现在可以叫他教父

里皮附体!安东尼奥用兵如神,气走越南主帅,现在可以叫他教父

国足风云
2026-01-21 01:49:51
大米江湖的暗战:那些超市里的“陷阱米”,正在偷走你的钱和健康

大米江湖的暗战:那些超市里的“陷阱米”,正在偷走你的钱和健康

富贵说
2026-01-18 20:36:10
陈道明戳破养老真相:所谓养老,不过是清醒时自渡,糊涂前自在

陈道明戳破养老真相:所谓养老,不过是清醒时自渡,糊涂前自在

青苹果sht
2026-01-20 05:51:45
窦靖童:我妈钱多到用不完,但穷苦潦倒的爸爸,成了我如今的心病

窦靖童:我妈钱多到用不完,但穷苦潦倒的爸爸,成了我如今的心病

璀璨幻行者
2026-01-20 04:29:30
什么是性成瘾?患者自述:比烟瘾、酒瘾厉害多了,比戒毒还难

什么是性成瘾?患者自述:比烟瘾、酒瘾厉害多了,比戒毒还难

泠泠说史
2025-10-30 15:20:45
向华炎追悼会!向华强夫妇现身,4000多江湖兄弟,多位猛人亮相

向华炎追悼会!向华强夫妇现身,4000多江湖兄弟,多位猛人亮相

裕丰娱间说
2026-01-19 21:36:23
黄磊女儿黄多多有意进圈,脸是真的小,身材也是真的好,应该会爆

黄磊女儿黄多多有意进圈,脸是真的小,身材也是真的好,应该会爆

民间平哥
2026-01-18 21:36:22
老人说:大寒吃三鲜,一年病不沾,明日大寒,记得吃这“3鲜”

老人说:大寒吃三鲜,一年病不沾,明日大寒,记得吃这“3鲜”

阿龙美食记
2026-01-19 08:03:37
取代联合国,特朗普邀60国建新“群”,唯独没中国,说明了什么?

取代联合国,特朗普邀60国建新“群”,唯独没中国,说明了什么?

顾史
2026-01-20 05:31:38
U23国足3-0越南进决赛!王钰栋淡定,李昊兴奋,全员抛起主帅庆祝

U23国足3-0越南进决赛!王钰栋淡定,李昊兴奋,全员抛起主帅庆祝

篮球资讯达人
2026-01-21 01:45:05
中国闹了个大笑话!老外先绷不住了,这下天塌了

中国闹了个大笑话!老外先绷不住了,这下天塌了

毛豆论道
2026-01-20 17:57:28
2026-01-21 02:40:49
Nodejs开发
Nodejs开发
分享只有程序员懂的干货
648文章数 823关注度
往期回顾 全部

科技要闻

收藏|这可能是CES2026最清醒一份复盘

头条要闻

丹麦首相:主权不谈判 准备贸易战

头条要闻

丹麦首相:主权不谈判 准备贸易战

体育要闻

勇士遭暴击!巴特勒重伤赛季报销

娱乐要闻

网红版闫学晶!600万粉博主阿爆翻车

财经要闻

李迅雷:2026买房不如租房

汽车要闻

奇瑞张贵兵:墨甲不做秀技术的企业 只做痛点终结者

态度原创

健康
旅游
教育
时尚
军事航空

血常规3项异常,是身体警报!

旅游要闻

什刹海冰场全面开放

教育要闻

学习不再靠死磕,是从初二开始的

冬季不臃肿穿搭指南来了,奔五奔六照着穿,拿捏温暖与高级感

军事要闻

德军13人前脚刚走 荷兰2名军人也撤离格陵兰岛

无障碍浏览 进入关怀版