Bro*_*Ban 2 https post node.js express angularjs
我试图将POST请求从我的angularjs控制器发送到nodejs服务器,然后应将完整的POST请求发送到外部API,这样就避免了CORS请求并使其更加安全,因为我正在发送相对私有的数据此POST请求。
我的用来向nodejs服务器发出发布请求的angularjs控制器函数看起来像这样,并且工作正常:
var noteData = {
"id":accountNumber,
"notes":[
{
"lId":707414,
"oId":1369944,
"nId":4154191,
"price":23.84
}
]
}
var req = {
method: 'POST',
url: '/note',
data: noteData
}
$http(req).then(function(data){
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
现在问题出在我的nodejs服务器上,我似乎无法弄清楚如何正确发送带有自定义标头的POST请求并传递JSON数据变量。
我已经使用了nodejs https函数,因为我需要访问的URL是一个https而不是http,所以我也尝试了request函数,但是没有运气。
我知道我发送的url和数据是正确的,因为当我将它们插入Postman时,它会返回我希望它返回的内容。这是我对nodejs服务器的不同尝试:
使用body-parser可以正确解析和检索来自angularjs请求的数据
尝试使用请求:
app.post('/buyNote', function (req, res) {
var options = {
url: 'https://api.lendingclub.com/api/investor/v1/accounts/' + accountNumber + '/trades/buy/',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': apiKey
},
data = JSON.stringify(req.body);
};
request(options, function (error, response, body) {
if (!error) {
// Print out the response body
// console.log(body)
console.log(response.statusCode);
res.sendStatus(200);
} else {
console.log(error);
}
})
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这将返回状态码500,它错误地发送了数据,并因此解释了服务器错误的原因...
使用https
var options = {
url: 'https://api.lendingclub.com/api/investor/v1/accounts/' + accountNumber + '/trades/buy/',
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': apiKey
}
};
var data = JSON.stringify(req.body);
var req = https.request(options, (res) => {
console.log(`STATUS: ${res.statusCode}`);
console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
});
req.write(data);
req.end();
Run Code Online (Sandbox Code Playgroud)
Https由于某些原因尝试返回301状态...
使用相同的数据,Postman中的标头和url返回一个成功的响应200,其中包含我需要的数据...
我不明白如何提出简单的http请求...
请注意:这是我的第一个使用nodejs和angular的项目,我会知道如何轻松地在php或java中实现类似的功能,但这使我感到困惑。
因此,经过大量的摸索并尝试了不同的方法之后,我终于找到了性能良好且完全满足我需要的解决方案,而又不会使事情变得过于复杂:
诀窍就是使用名为request-promise的模块。这是我使用的代码:
const request = require('request-promise');
const options = {
method: 'POST',
uri: 'https://requestedAPIsource.com/api',
body: req.body,
json: true,
headers: {
'Content-Type': 'application/json',
'Authorization': 'bwejjr33333333333'
}
}
request(options).then(function (response){
res.status(200).json(response);
})
.catch(function (err) {
console.log(err);
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4480 次 |
| 最近记录: |