私はnodeAppを持っています。それは何かをします。
特定の時点で、世の中に出回っている API と通信する必要があります。Postman のような REST ツールで API を使用するのは簡単です。
郵便屋さん
Url:
https://epicurl
Headers:
Content-Type : application/json
Accept : application/json
x-key : secret
Body:
{
"some":"kickass"
"data":"here"
}
上記を Postman で送信すると、素早い応答が得られます。残りのツールをどうぞ。
彼らの API が機能するようになったので、今度は Node.js アプリケーションで同じ応答を行う必要があります。
これは物事が奇妙になるところです...
リクエストモジュール: FAILS
var request = require('request')
...lots_of_other_stuff...
var options = {
uri: 'https://epicURL',
method: 'POST',
json: true,
headers : {
"Content-Type":"application/json",
"Accept":"application/json",
"x-key":"secretbro"
},
body : JSON.stringify(bodyModel)
};
request(options, function(error, response, body) {
if (!error) {
console.log('Body is:');
console.log(body);
} else {
console.log('Error is:');
logger.info(error);
}
cb(body); //Callback sends request back...
});
上記は失敗します..私たち全員が愛する良いECONNRESETエラーがスローされます! なんで?知るか?
https.request() - 動作します!
var https = require("https");
https.globalAgent.options.secureProtocol = 'SSLv3_method';
var headers = {
"Content-Type":"application/json",
"Accept":"application/json",
"x-key":"nicetrybro"
}
var options = {
host: 'www.l33turls.com',
port:443,
path: "/sweetpathsofjebus",
method: 'POST',
headers: headers
};
var req = https.request(options, function(res) {
res.setEncoding('utf-8');
var responseString = '';
res.on('data', function(data) {
responseString += data;
});
res.on('end', function() {
var resultObject = responseString;
//Call the callback function to get this response object back to the router.
cb(resultObject);
});
});
req.on('error', function(e) {
console.log(e);
});
req.write(bodyString);
req.end();
しかし、ふと気づく…
リクエストモジュールを使用するときにこのコード行をそのままにしておくと、機能します...
var https = require("https");
https.globalAgent.options.secureProtocol = 'SSLv3_method';
これはどこかに文書化されていますが、私はそれを見逃していますか? 誰か私にこれを説明してくれませんか?