Node.jsを使用していて、特定のデータを含むPOSTリクエストを外部サーバーに送信する必要があります。GETでも同じことをしていますが、これははるかに簡単です。追加のデータを含める必要があります。したがって、作業中のGETリクエストは次のようになります。
var options = {
hostname: 'internetofthings.ibmcloud.com',
port: 443,
path: '/api/devices',
method: 'GET',
auth: username + ':' + password
};
https.request(options, function(response) {
...
});
だから私はPOSTリクエストで同じことをする方法を考えていました、次のようなデータを含みます:
type: deviceType,
id: deviceId,
metadata: {
address: {
number: deviceNumber,
street: deviceStreet
}
}
上記のオプションにこのデータを含める方法を教えてもらえますか?前もって感謝します!
Optionsオブジェクトには、GETリクエストで行ったようにリクエストオプションを含め、POSTの本文に必要なデータを含むもう1つのオブジェクトを作成します。クエリ文字列関数(npm install querystring
でインストールする必要があります)を使用して文字列化し、https.request()のwrite()メソッドとend()メソッドを使用して転送します。
ポストリクエストを成功させるには、optionsオブジェクトに2つの追加ヘッダーが必要であることに注意することが重要です。これらは :
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postBody.length
したがって、querystring.stringifyが返された後で、オプションオブジェクトを初期化する必要があります。そうしないと、文字列化された本文データの長さがわかりません。
var querystring = require('querystring')
var https = require('https')
postData = { //the POST request's body data
type: deviceType,
id: deviceId,
metadata: {
address: {
number: deviceNumber,
street: deviceStreet
}
}
};
postBody = querystring.stringify(postData);
//init your options object after you call querystring.stringify because you need
// the return string for the 'content length' header
options = {
//your options which have to include the two headers
headers : {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': postBody.length
}
};
var postreq = https.request(options, function (res) {
//Handle the response
});
postreq.write(postBody);
postreq.end();