javascript - 如何从另一个 .js 文件添加 Express 路由端点?
问题描述
我有一个 Express 应用程序,其server.js
文件可能有 30 个 GET 和 POST 端点,如下所示:
const express = require('express');
const app = express();
const http_port = 8000;
app.listen(http_port,()=>{
console.log(`app listening on port ${http_port}`);
});
app.get('/create_something',function(req,res){
createSomething();
res.send('create');
});
app.post('/update_something',function(req,res){
updateSomething();
res.send('update');
});
//and so on for 30 more endpoints
为了便于维护,我想将这组端点分解为不同的文件,例如video.js
和audio.js
.
认为这个解决方案可能会有所帮助,我创建了另一个文件other_route.js
:
var express=require('express');
var router=express.Router();
router.get('/other_route_endpoint',function(req,res){
res.send('other_route_endpoint');
});
module.exports.router=router;
然后server.js
通过将我的初始声明更改为:
const express = require('express');
const app = express();
const http_port = 8000;
var router=express.Router();
router.use('/other_route',require('./other_route').router);
但是当我访问时myserver.com:8000/other_route_endpoint
,我得到了这个错误:
Cannot GET /other_route_endpoint
如何将其他文件中的端点添加到 中server.js
,以便将其许多端点中的一些移动到这些子文件中?
解决方案
首先,您的主文件不应该使用路由器。将行更改为app.use('/other_route',require('./other_route').router);
。
第二:您在路由文件中设置的每个路径都router.use
将相对于app.use
. 请参阅https://expressjs.com/en/guide/routing.html#express-router
例如,如果你的主文件中有这个
app.use('/foo', require('./bar.js'));
而这在bar.js
router.get('/bar', /* do something */);
那么对应的端点就是/foo/bar
.
推荐阅读
- excel - 在这种情况下如何获得总利润?
- c# - 任务激活 HighVersionLie 失败
- excel - 如何将每个条形图顶部的 % 更改为数字?
- flutter - 使用 Material () 或 Scaffold () 小部件时,使用不透明度设置颜色样式不起作用
- flutter - 在 Java 中加密和在 dart Flutter 中解密
- flutter - 如何在颤动的列表视图中对多个表单实现表单验证?
- python - 从几年的时间序列中删除一天中的某些小时v - python
- cordova - 科尔多瓦插件是否与电容器(离子)一起使用
- mysql - Windows 更新后 Xammp MySQL 无法启动
- google-bigquery - 根据另一个表中的开始日期和结束日期对值求和