我正在处理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后维护它?
答案 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中。然后会话数据可用。