Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 节点/快速-重构路由_Node.js_Express - Fatal编程技术网

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;})您没有在那里调用函数。只需执行与原始代码相同的操作。