Node.js で HTTP / HTTPS の GETリクエスト や POSTリクエスト をする方法をまとめます。
Node.js 標準機能で実装もできますが…無駄なコードが多くなってしまうので request モジュール を利用して実装するのが簡単です。
今回は request モジュール を利用して GETリクエスト または POSTリクエスト を行うサンプルコードを載せます。
サンプルコード
GETリクエスト、POSTリクエストを行う簡単なサンプルコードを以下に記載します。
GETリクエスト
リクエストで http://localhost:3000/api/test?testkey=testvalue&hoge=hoge を行う例です。
https へアクセスする場合はそのまま URL を https で記載すれば動作します。
var webclient = require("request");
webclient.get({
url: "http://localhost:3000/api/test",
qs: {
testkey: "testvalue",
hoge: "hoge"
}
}, function (error, response, body) {
console.log(body);
});
POSTリクエスト
リクエストで http://localhost:3000/api/test に POST を行い、そのリクエストボディーに JSON文字列 を指定する例です。
var webclient = require("request");
webclient.post({
url: "http://localhost:3000/api/test",
headers: {
"content-type": "application/json"
},
body: JSON.stringify({foo: "bar"})
}, function (error, response, body){
console.log(body);
});
API仕様
request(option, callback)
HTTPリクエスト または HTTPSリクエスト を行います。
option
Type: object
HTTP/HTTPSリクエストの設定を行います。 よく使いそうな設定項目だけを以下に取り上げます。
| パラメーター | 型 | 説明 |
|---|---|---|
| uri || url | string | 必須。リクエスト先のURLを指定します。 |
| method | string | リクエストメソッドを指定します。デフォルト "GET"。 |
| headers | object | リクエストヘッダーを指定します。 |
| qs | object | リクエスト先のURLへ付与するクエリ文字列を指定します。 |
| body | Buffer, String, ReadStream | リクエストボディーを指定します。JSONを指定する場合は文字列化して指定します。 |
| form | object | 値が設定された場合、content-type: application/x-www-form-urlencoded でリクエストを行います。 |
| formData | object | 値が設定された場合、 content-type: multipart/form-data でリクエストを行います。 |
| multipart | array | 値が設定された場合、 multipart/related でリクエストを行います。 |
| preambleCRLF | boolean | multipart/form-data リクエストの境界の手前に CRLF改行 を挿入します。 |
| postambleCRLF | boolean | multipart/form-data リクエストの境界の後ろに CRLF改行 を挿入します。 |
| json | boolean | body に JSON文字列 を指定している場合、リクエストヘッダーに content-type: application/json を付与します。
また、レスポンスボディーは JSONオブジェクト として パース を行います。 |
callback
Type: Function(Error error, http.IncomingMessage response, string / Buffer body)
レスポンスを受け取った際に呼び出されます。
参考記事
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!