我有一个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
。
认为this solution可能会有所帮助,因此我创建了另一个文件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
中,以便将其许多端点中的某些端点移动到这些子文件中?
答案 0 :(得分:1)
首先,您的主文件不应使用路由器。将行更改为app.use('/other_route',require('./other_route').router);
。
第二:在路由文件中用router.use
设置的每个路径都将相对于{em>在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
。