记录: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,闲下来时作为另一个话题写.

相关推荐
不在逃避q3 分钟前
Trae/Vs Code/Cursor命令行无法跑npm命令
前端·arcgis·npm
夏殇之殁17 分钟前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript
The Chosen One98522 分钟前
高进度算法模板速记(待完善)
java·前端·算法
陈随易28 分钟前
MoonBit抓包模块pcap,查看电脑的每一次联网通信
前端·后端·程序员
新中地GIS开发老师2 小时前
WebGIS开发学生作品|低空航天管理与航线规划系统
前端·javascript·webgis·三维gis开发
用户059540174462 小时前
大模型对话记忆持久化踩坑实录:用 Playwright 自动化测了 300 次,终于揪出会话丢失的真凶
前端·css
丙氨酸長鏈2 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
kyriewen3 小时前
面试官让我手写虚拟列表——AI生成的版本,快速滚动几下就白屏了
前端·javascript·面试
IT_陈寒3 小时前
Vite热更新失效?你可能漏了这个配置
前端·人工智能·后端
梅孔立4 小时前
两种免费的翻译API调用方式详解 - Edge官方API与个人缓存服务
前端·缓存·edge