Node.js 节点/快速-重构路由
我有以下节点/快速代码Node.js 节点/快速-重构路由,node.js,express,Node.js,Express,我有以下节点/快速代码 // Requires var app = require("express")(); var handler = require("./routes/session"); // Routes app.post("/session", handler.sessionGetNew); app.get("/session", handler.sessionGetAll); app.get("/session/:sessionid", handler.sessionG
// Requires
var app = require("express")();
var handler = require("./routes/session");
// Routes
app.post("/session", handler.sessionGetNew);
app.get("/session", handler.sessionGetAll);
app.get("/session/:sessionid", handler.sessionGetOne);
app.put("/session/:sessionid", handler.sessionUpdate);
app.delete("/session/:sessionid", handler.sessionDelete);
// Listener
app.listen(9000);
console.log("Listening.....");
有没有办法将路由重构为类似于此pseudcode的东西
app.route("/session"),
.post(handler.session....)
.get(handler.session.....)
app.route("/session/:sessionid"),
.post(handler.session....)
.get(handler.session....)
.put(handler.session....)
你可以用
app.js
var app = require('express')();
var session = require('./routes/session');
app.use('/session', session);
app.listen(9000, function() {
console.log('listening');
});
var router = require('express').Router();
var handler = require('./lib/sessionHandler'); // this was 'handler' in app.js
router.post('/', handler.sessionGetNew);
router.get('/', handler.sessionGetAll);
router.get('/:sessionid', handler.sessionGetOne);
router.put('/:sessionid', handler.sessionUpdate);
router.delete('/:sessionid', handler.sessionDelete);
module.exports = router;
路由/session.js
var app = require('express')();
var session = require('./routes/session');
app.use('/session', session);
app.listen(9000, function() {
console.log('listening');
});
var router = require('express').Router();
var handler = require('./lib/sessionHandler'); // this was 'handler' in app.js
router.post('/', handler.sessionGetNew);
router.get('/', handler.sessionGetAll);
router.get('/:sessionid', handler.sessionGetOne);
router.put('/:sessionid', handler.sessionUpdate);
router.delete('/:sessionid', handler.sessionDelete);
module.exports = router;
你可以用
app.js
var app = require('express')();
var session = require('./routes/session');
app.use('/session', session);
app.listen(9000, function() {
console.log('listening');
});
var router = require('express').Router();
var handler = require('./lib/sessionHandler'); // this was 'handler' in app.js
router.post('/', handler.sessionGetNew);
router.get('/', handler.sessionGetAll);
router.get('/:sessionid', handler.sessionGetOne);
router.put('/:sessionid', handler.sessionUpdate);
router.delete('/:sessionid', handler.sessionDelete);
module.exports = router;
路由/session.js
var app = require('express')();
var session = require('./routes/session');
app.use('/session', session);
app.listen(9000, function() {
console.log('listening');
});
var router = require('express').Router();
var handler = require('./lib/sessionHandler'); // this was 'handler' in app.js
router.post('/', handler.sessionGetNew);
router.get('/', handler.sessionGetAll);
router.get('/:sessionid', handler.sessionGetOne);
router.put('/:sessionid', handler.sessionUpdate);
router.delete('/:sessionid', handler.sessionDelete);
module.exports = router;
这将大致满足您的需求
function routReductor(route, methods) {
var goodMethods = ['get', 'post', 'put', 'delete'];
for (var key in methods) {
if (goodMethods.indexOf(key) == -1) continue;
app[key](route, methods[key])
}
}
routReductor('/:sessionid', {
get: handler.sessionGetOne,
put: handler.sessionUpdate,
delete: handler.sessionDelete
});
这将大致满足您的需求
function routReductor(route, methods) {
var goodMethods = ['get', 'post', 'put', 'delete'];
for (var key in methods) {
if (goodMethods.indexOf(key) == -1) continue;
app[key](route, methods[key])
}
}
routReductor('/:sessionid', {
get: handler.sessionGetOne,
put: handler.sessionUpdate,
delete: handler.sessionDelete
});
你的“伪代码”怎么了?这是正确的代码。尝试过这个,但没有任何效果<代码>app.route('/session').get(函数(req,res,next){handler.sessionGetAll;}).post(函数(req,res,next){handler.sessionNew;})代码>您没有在那里调用函数。只需执行与原始代码相同的操作。您的“伪代码”有什么问题?这是正确的代码。尝试过这个,但没有任何效果<代码>app.route('/session').get(函数(req,res,next){handler.sessionGetAll;}).post(函数(req,res,next){handler.sessionNew;})代码>您没有在那里调用函数。只需执行与原始代码相同的操作。