curlコマンドをNode.js Axiosに変換
curlコマンドをNode.js Axios HTTPクライアントコードに変換する方法を解説。インターセプター、自動JSON変換、エラーハンドリング、リクエスト設定を学びましょう。
Node.js
詳細な説明
curlからNode.js Axiosへの変換
Axiosは、Node.jsとブラウザで最も人気のあるHTTPクライアントのひとつで、自動JSON変換、インターセプター、クリーンなAPIを提供します。多くのNode.js開発者にとって定番のライブラリです。
GETリクエスト
curl:
curl https://api.example.com/users
Axios:
const axios = require("axios");
const { data } = await axios.get("https://api.example.com/users");
Axiosは自動的にJSONレスポンスをパースするため、fetchのように .json() を呼び出す必要がありません。
JSONを使ったPOST
curl:
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice"}'
Axios:
const { data } = await axios.post("https://api.example.com/users", {
name: "Alice",
});
AxiosはオブジェクトをJSONに自動シリアライズし、Content-Typeヘッダーも自動設定します。
カスタムヘッダーと認証
curl:
curl -H "Authorization: Bearer token123" \
-H "X-Custom: value" \
https://api.example.com/me
Axios:
const { data } = await axios.get("https://api.example.com/me", {
headers: {
"Authorization": "Bearer token123",
"X-Custom": "value",
},
});
ファイルアップロード
curl:
curl -F "file=@photo.jpg" https://api.example.com/upload
Axios:
const FormData = require("form-data");
const fs = require("fs");
const form = new FormData();
form.append("file", fs.createReadStream("photo.jpg"));
const { data } = await axios.post("https://api.example.com/upload", form, {
headers: form.getHeaders(),
});
エラーハンドリング
Axiosはfetchとは異なり、2xx以外のステータスコードでエラーをスローします:
try {
const { data } = await axios.get("https://api.example.com/data");
} catch (error) {
if (error.response) {
console.log(error.response.status, error.response.data);
}
}
Axios vs Fetch
Axiosは自動JSONパース、リクエスト/レスポンスインターセプター、組み込みのタイムアウトサポート、優れたエラーハンドリングを標準で提供しており、複雑なNode.jsアプリケーションに特に適しています。
ユースケース
Node.jsバックエンド開発者が、外部APIと通信するマイクロサービスのcurlコマンドをAxios呼び出しに変換し、ログ記録用のインターセプターが必要な場合に使用します。