当前位置: 首页 > news >正文

记录:express router,可以让node.js后端文件里的路由分布的更清晰

假设我们有一个server.js,里面的内容用于响应客户端的fetch请求,如果fetch请求很少,我们通常会把所有内容写到server.js里,例如:

const server = express();server.post("/api/v1/sendgraindata", (req, res)...server.get("/api/v1/guarddata", (req, res)...server.get("/api/v1/skytemphudivalue", (req, res)....server.post("/api/v1/startstopinner", (req, res)........

但是,这样把数据操作与控制操作混杂在一起了,而且如果需要fetch的请求特别多,就很难寻找想要修改的内容了,所以为了更清晰一些,我们可以这样:

一个完整的小server.js:

const fs = require("fs");const path = require("path");const cors = require("cors");const express = require("express");//''''''''''''''''''''''''''''''''''   导入路由  ''''''''''''''''''''''''''''''''''''''''''''const commRouters = require("./routers/commRouter");         //公用路由  routes文件夹下的commRouter.js文件const storeRouters = require("./routers/storeRouter");             //数据路由  routes文件夹下的storeRouter.js文件const measureRouters = require("./routers/measureRouter"); //控制路由 routes文件夹下的measureRouter.js文件//'''''''''''''''''''''''''''''''''''' ''''''''''''''''''''''''''''''''''''''''''const server = express();//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''server.use(express.json());server.use(express.urlencoded({ extended: true }));server.use(cors());server.use(express.static(path.join(__dirname, "/public")));//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''server.use("/api/v1/comm", commRouters);server.use("/api/v1/store", storeRouters);server.use("/api/v1/measure", measureRouters);//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''const port = fs.readFileSync(path.join(__dirname, "/port.txt"), "utf-8");//监听http请求端口server.listen(port, () => {console.log(`listening on port ${port}...`);});

1 commRouter.js:

const express = require("express");

const commRouter = express.Router();

commRouter.get("/userbycodepassword", (req, res) => {

  .....

  });

});

module.exports = commRouter;

2 storeRouter.js:

const express = require("express");

const storeRouter = express.Router();

storeRouter.get("/storebystorename", (req, res) => {

});

storeRouter.delete("/storebyid", (req, res) => {

...

});

storeRouter.put("/weatherstationinfo", (req, res) => {

....

});

storeRouter.put("/updatestorebyid", (req, res) => {

...  

});

module.exports = storeRouter;

3 measureRouter.js

const express = require("express");

const measureRouter = express.Router();

const net = require("net"); 

measureRouter.put("/plcdevice", (req, res) => {

 ...

});

measureRouter.get("/plcdevice", (req, res) => {

});

1 客户端fetch:

const res = await fetch(

    `${serverAddress}/api/v1/comm/userbycodepassword?code=${code}&&password=${password}`

  );

将自动由后端的commRouter.js处理

2 客户端fetch:

 const res = await fetchWithTimeout(

    `${serverAddress}/api/v1/measure/rtuskystoretemphudi?branchnum=${branchNum}&&address=${address}&&count=${count}&&waitbytes=${waitbytes}&&ip=${ip}`,

    options

  );

将自动由后端的measureRouter.js处理

把server.js里的路由分到多个文件里处理,将使得主文件更清晰,查找路由更方便.

fetchWithTimeout用于在循环里fetch,闲下来时作为另一个话题写.

http://www.xdnf.cn/news/585019.html

相关文章:

  • vim以及vi编辑器常用快捷键指令
  • 服务器操作系统调优内核参数(方便查询)
  • 复杂项目中通过使用全局变量解决问题的思维方式
  • 2025中青杯数学建模B题思路+模型+代码
  • 【TTS回顾】CosyVoice 深度解析:基于LLM的TTS模型
  • iOS 直播弹幕功能的实现
  • 前端三件套之html详解
  • DevOps体系之Jmeter
  • java面试每日一背 day2
  • MySQL错误1419(HY000)解决方案:SUPER权限缺失与二进制日志启用冲突的3种处理方式
  • 内存管理子系统学习记录
  • uniapp实现H5、APP、微信小程序播放.m3u8监控视频
  • AVL树的实现
  • 【线段树】P2846 [USACO08NOV] Light Switching G|LG4|普及+
  • 无人机集装箱箱号识别系统准确率如何?能达到多少?
  • 微服务架构中的 RabbitMQ:异步通信与服务解耦(一)
  • Linux探秘:驾驭开源,解锁高性能——基础指令(续集)
  • LeetCode 1340. 跳跃游戏 V(困难)
  • 【Harmony】【鸿蒙】List列表View如果刷新内部的自定义View
  • 力扣HOT100之二叉树: 236. 二叉树的最近公共祖先
  • vue3定于组件名字的几种方法
  • 杨校老师竞赛课之青科赛GOC5-6年级组模拟题
  • ISO 26262- 5 评估硬件度量值
  • 2025年中青杯赛题浅析-快速选题
  • 12kV 环保气体绝缘交流金属封闭开关设备现场交流耐压试验规范
  • Web前端开发(HTML、CSS快速入门)
  • 2024 年地理信息技术与应用技能大赛(选拔赛/初级)——实操试题
  • 部署Prometheus并通过Grafana展示界面
  • wx.getPrivacySetting接口needAuthorization一直返回false
  • vue element-plus 集成多语言