17

複数のルートがあります。グループのルートの GET メソッド内で呼び出すことにより、ユーザーのルート (GET メソッド) からデータを取得するにはどうすればよいですか? これを行う最善の方法は何ですか?

私の app.js は次のようになります。

var express = require('express');

var routes = require('./routes/index');
var users = require('./routes/users');
var groups = require('./routes/groups');

var app = express();

app.use('/', routes);
app.use('/users', users);
app.use('/groups', groups);

module.exports = app;
app.listen(3000);

次に、routes/users.js という別のファイルがあります。

var express = require('express');
var router = express.Router();

/* GET users listing. */
router.get('/', function(req, res, next) {
  res.send('GET ON THE users!');
});

module.exports = router;

そして、別のルート routes/groups.js:

var express = require('express');
var router = express.Router();
var otherRouter = require('./users')

/* GET groups listing. */
router.get('/', function(req, res, next) {

    // call the get on users and retrieve all data from that request

    res.send('GET for the groups');
});

module.exports = router;
4

5 に答える 5

23

説明されていたのは「転送」であると考えています。これは非常に便利で、他のフレームワークや他の言語で利用できます。

さらに、「転送」として、後続の HTTP 応答からのオーバーヘッドはありません。

Express の場合、バージョン 4.X では以下が利用可能です。おそらく他のバージョンですが、私は確認していません。

var app = express()

function myRoute(req, res, next) {
  return res.send('ok')
}

function home(req, res, next) {
   req.url = '/some/other/path'

   // below is the code to handle the "forward".
   // if we want to change the method: req.method = 'POST'        
   return app._router.handle(req, res, next)
}

app.get('/some/other/path', myRoute)
app.get('/', home)
于 2018-02-16T05:53:21.643 に答える
10

run-middlewareそのためにモジュールを正確に使用できます

app.runMiddleware('/pathForRoute',{method:'post'},function(responseCode,body,headers){
     // Your code here
})

より詳しい情報:

開示:私はこのモジュールのメンテナー兼最初の開発者です。

于 2016-09-14T13:40:21.497 に答える