Node.jsで「request」モジュールを使ってPOSTデータを送信する方法(初心者向け)
Node.jsの「request」モジュールでPOSTデータを送信する方法
準備
まず、以下の準備が必要です。
- Node.jsがインストールされていること
- 「request」モジュールをインストールすること
npm install request
基本的な例
以下のコードは、https://jsonplaceholder.typicode.com/posts
に対して、name
と email
というデータをPOSTリクエストで送信する例です。
const request = require('request');
const data = {
name: 'Taro Yamada',
email: '[email protected]'
};
const options = {
url: 'https://jsonplaceholder.typicode.com/posts',
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
request(options, (error, response, body) => {
if (error) {
console.error(error);
return;
}
console.log(response.statusCode);
console.log(body);
});
このコードは以下の処理を行います。
- 送信するデータ (
name
とemail
) をオブジェクトに格納します。 - リクエストオプションを設定します。
url
: 送信先のURLmethod
: リクエストメソッド(今回はPOST)headers
: ヘッダー情報(今回はContent-TypeをJSONに設定)body
: 送信するデータ(JSON形式に変換して設定)
request
関数を使用して、POSTリクエストを送信します。- コールバック関数で、エラー処理とレスポンス処理を行います。
- エラーがない場合は、ステータスコードとレスポンスボディをコンソールに出力します。
応用
以下のコードは、上記の例を拡張して、エラー処理とレスポンス処理をより詳細にしたものです。
const request = require('request');
const data = {
name: 'Taro Yamada',
email: '[email protected]'
};
const options = {
url: 'https://jsonplaceholder.typicode.com/posts',
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
request(options, (error, response, body) => {
if (error) {
console.error(error.message);
if (error.code === 'ECONNREFUSED') {
console.error('接続が拒否されました。');
} else if (error.code === 'ETIMEOUT') {
console.error('タイムアウトしました。');
}
return;
}
if (response.statusCode !== 201) {
console.error('ステータスコードが201ではありません:', response.statusCode);
return;
}
const parsedBody = JSON.parse(body);
console.log('投稿が作成されました:', parsedBody.id);
});
- エラーメッセージの詳細を出力します。
- ステータスコードが201でない場合は、エラーとして処理します。
- レスポンスボディをJSON形式にパースして、作成された投稿のIDを出力します。
その他
- 送信するデータは、オブジェクトや配列など、自由に設定できます。
- ヘッダー情報やオプションは、さらに詳細な設定が可能です。
- エラー処理やレスポンス処理は、アプリケーションの要件に合わせてカスタマイズしてください。
const request = require('request');
const data = {
name: 'Taro Yamada',
email: '[email protected]'
};
const options = {
url: 'https://jsonplaceholder.typicode.com/posts',
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
request(options, (error, response, body) => {
if (error) {
console.error(error);
return;
}
console.log(response.statusCode);
console.log(body);
});
補足
- このコードは、Node.jsと「request」モジュールがインストールされていることを前提としています。
- 送信するデータやURLは、自由にを変更できます。
- エラー処理やレスポンス処理は、必要に応じて追加や変更してください。
Node.jsでPOSTデータを送信するその他の方法
HTTPモジュール
Node.jsの標準モジュールである「http」モジュールを使用して、POSTリクエストを送信することができます。この方法はシンプルでわかりやすいですが、「request」モジュールに比べて機能が少なく、エラー処理やレスポンス処理が煩雑になる場合があります。
const http = require('http');
const data = {
name: 'Taro Yamada',
email: '[email protected]'
};
const options = {
hostname: 'jsonplaceholder.typicode.com',
port: 80,
path: '/posts',
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
};
const req = http.request(options, (res) => {
if (res.statusCode !== 201) {
console.error('ステータスコードが201ではありません:', res.statusCode);
return;
}
res.on('data', (chunk) => {
console.log(chunk.toString());
});
res.on('end', () => {
console.log('リクエストが完了しました。');
});
});
req.on('error', (error) => {
console.error(error);
});
req.write(JSON.stringify(data));
req.end();
利点
- シンプルでわかりやすい
- 標準モジュールなので、別途インストールする必要がない
欠点
- 機能が少ない
- エラー処理やレスポンス処理が煩雑
Axiosライブラリ
Axiosは、PromiseベースのHTTPクライアントライブラリです。「request」モジュールよりも使いやすく、エラー処理やレスポンス処理が簡単に行えます。また、インターセプター機能など、便利な機能も備えています。
const axios = require('axios');
const data = {
name: 'Taro Yamada',
email: '[email protected]'
};
axios.post('https://jsonplaceholder.typicode.com/posts', data)
.then((response) => {
console.log(response.status);
console.log(response.data);
})
.catch((error) => {
console.error(error);
});
- 使いやすい
- インターセプター機能など、便利な機能が備わっている
- 「request」モジュールよりも重い
fetch API
ブラウザでよく使用されるfetch APIは、Node.jsでも使用することができます。Promiseベースで、非同期処理を簡単に記述できます。
const url = 'https://jsonplaceholder.typicode.com/posts';
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Taro Yamada',
email: '[email protected]'
})
};
fetch(url, options)
.then((response) => response.json())
.then((data) => {
console.log(data);
})
.catch((error) => {
console.error(error);
});
- ブラウザ開発者にとって馴染みやすい
- 非同期処理を簡単に記述できる
- Node.js 8以降でのみ利用可能
上記以外にも、様々なライブラリやツールを使用して、Node.jsでPOSTデータを送信することができます。それぞれの利点と欠点を理解した上で、適切な方法を選択することが重要です。
node.js request