如何使用会话数据执行POST请求到服务器节点js中的端点

时间:2016-10-12 08:34:16

标签: javascript node.js session express

我正在处理express,我需要对服务器内的端点执行POST请求。我的代码是:

request({
  url : 'http://localhost:3000/api/oauth2/authorize',
  qs:{
    transaction_id:req.oauth2.transactionID,
    user:req.user,
    client : req.oauth2.client
  },
  headers:{
    'Authorization':auth,
     'Content-Type':'application/x-www-form-urlencoded'
  },
  method:'POST'
},function(err,res,bo){
  console.log("Got response with body :"+bo);
});      

localhost是当前服务器,这是正常工作但会话数据在执行POST请求时丢失。
有没有其他方法可以在同一台服务器中执行POST或保存会话数据,以便在POST后维护它?

1 个答案:

答案 0 :(得分:0)

嗯,通常你会注册你的路线:

var handlePostRequest = function(req,res,next) {
    // process req.body etc.
};
app.post('/api/oauth2/authorize', handlePostRequest);

如果您想在应用程序中调用该端点,只需拨打handlePostRequest()即可提供req, res, next个对象。

假设handlePostRequest在全球范围内,或已经要求;在你的例子中:

app.get('/some/other/endpoint', function(req,res,next){
    // override the default req.body with your supplied data
    req.body = {
        transaction_id: req.oauth2.transactionID,
        user: req.user,
        client: req.oauth2.client
    };

    // you may also override req.headers etc. for authorization
    // ...

    // then call the "api" again with the new values
    return handlePostRequest(req,res,next);
});

如果您严格要发出POST请求(由于某种原因),您还需要提供sessionID,它将在您的cookie中。然后会话数据可用。