将中间件应用于GET路由时,req.body为空

时间:2017-04-12 13:03:27

标签: javascript node.js express body-parser

我编写了一个用于身份验证的路由器和一个用于解析重定向参数并保存在会话中的中间件。但是在解析查询参数时,req.body和req.params都是空的。

router.js

/* Route for Facebook login. This is the only login option for now. */

var router = require('express').Router();
var passport = require('passport');
var redirect = require('../middlewares/redirect');

/**
 * facebook oauth
 */
router.get('/facebook', redirect.parse(), passport.authenticate('facebook'));

redirect.js

/**
 * save the redirect parameter to session
 *
 * @param {Object} options options for the middleware
 */
module.exports.parse = function (options) {
  return function (req, res, next) {
    console.log(req.body);
    console.log(req.params);
    if (req.body.redirect) {
      req.session.redirect = req.body.redirect;
      console.log(req.body.redirect);
      console.log(req.session.redirect);
      req.session.save();
    }
    next();
  };
};

当我致电/auth/facebook?redirect=/groups时,输出为:

{}
{}

代码在Github上https://github.com/guoyunhe/shrgrp

1 个答案:

答案 0 :(得分:1)

  

您正在调用GET并期待来自req.body的数据无法正常工作

通过GET调用,您可以通过两种方式获取数据:

  

如果是parameter,那么您可以进入req.params

     

如果是query string,那么您可以进入req.query