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呼び出しに変換し、ログ記録用のインターセプターが必要な場合に使用します。

Try It — Curl to Code Converter

フルツールを開く