Angularjs 在express中的一篇帖子中获得两个回复
我想我有一个愚蠢的问题,但我不知道如何解决这个问题。在express中的一篇文章中,我想向另一台服务器发送两个请求,并希望得到客户端的两个响应(在我的例子中是angular)。我尝试创建两个Angularjs 在express中的一篇帖子中获得两个回复,angularjs,json,node.js,express,response,Angularjs,Json,Node.js,Express,Response,我想我有一个愚蠢的问题,但我不知道如何解决这个问题。在express中的一篇文章中,我想向另一台服务器发送两个请求,并希望得到客户端的两个响应(在我的例子中是angular)。我尝试创建两个res.send(body),但我得到一个错误错误:发送后无法设置标题。我的问题是:这两个响应是否可能在一个响应中抛出并获取 router.post('/paynow', function(req, res){ request({ method: 'POST', url
res.send(body)
,但我得到一个错误错误:发送后无法设置标题。
我的问题是:这两个响应是否可能在一个响应中抛出并获取
router.post('/paynow', function(req, res){
request({
method: 'POST',
url: 'https://secure.snd.payu.com/pl/standard/user/oauth/authorize',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: "xyz"
}, function (error, response, body) {
console.log('Status:', response.statusCode);
console.log('Headers:', JSON.stringify(response.headers));
console.log('Response:', body);
res.send(body);
}
)
request({
method: 'GET',
url: 'https://secure.snd.payu.com/api/v2_1/paymethods/',
headers: {
'Authorization': 'xyz'
}}, function (error, response, body) {
console.log('Status:', response.statusCode);
console.log('Headers:', JSON.stringify(response.headers));
console.log('Response:', body);
res.send(body);
}
),
})
您不能发送两个响应。但您可以将两个请求结果合并为一个响应。尝试使用承诺:
router.post('/paynow', function(req, res){
Promise.all([
new Promise((resolve, reject) => {
request({
method: 'POST',
url: 'https://secure.snd.payu.com/pl/standard/user/oauth/authorize',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: "xyz"
}, function (error, response, body) {
if (error) return reject(error)
resolve(body)
})
}),
new Promise((resolve, reject) => {
request({
method: 'POST',
url: 'https://secure.snd.payu.com/pl/standard/user/oauth/authorize',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: "xyz"
}, function (error, response, body) {
if (error) return reject(error)
resolve(body)
})
})
]).then(listOfResponses => {
res.json(listOfResponses)
})
})
太好了。。。。首先,您不能发送多个响应。i、 e.res.send一次&仅一次强> 因此,您可以做的是…确定应该首先执行的优先级…在您的情况下,首先授权,然后是支付方法 所以正确的顺序应该是
$.ajax{
url : /authorize,
type : post,
data : /same data,
, success : function(response) {
//within successs make pay method request as another ajax using the
// response from previous authorize request
$.ajax{
url : /paymethods,
data : response
}
}
}
同样地,分开你的路线
router.post('/authorize', function(req, res){
request({
method: 'POST',
url: 'https://secure.snd.payu.com/pl/standard/user/oauth/authorize',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: "xyz"
}, function (error, response, body) {
console.log('Status:', response.statusCode);
console.log('Headers:', JSON.stringify(response.headers));
console.log('Response:', body);
res.send(body);
}
)}
及
router.post('/paynow', function(req, res){
request({
method: 'GET',
url: 'https://secure.snd.payu.com/api/v2_1/paymethods/',
headers: {
'Authorization': 'xyz'
}}, function (error, response, body) {
console.log('Status:', response.statusCode);
console.log('Headers:', JSON.stringify(response.headers));
console.log('Response:', body);
res.send(body);
}
)
}