OpenAPIからAxios変換
TYPE-SAFE AXIOS API CLIENT GENERATOR

OpenAPI・Swagger から Axios TypeScript クライアント自動生成

OpenAPI 3.0およびSwaggerのJSON/YAML仕様書から、型安全で保守性の高いAxios HTTPクライアント関数とパラメータインターフェースを自動生成します。

100% クライアントサイド処理
サーバー送信ゼロ
プリセット:
クライアント設計
返り値の型
ベース URL
OpenAPI / Swagger 仕様書 (JSON / YAML)
/**
 * Swagger Petstore (v1.0.0)
 * Sample store API with pets, inventories, and orders for testing Axios client generation.
 * Generated by ToolsAA OpenAPI to Axios Generator
 */

import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';

DEFAULT_BASE_URL = 'https://petstore.swagger.io/v2';

apiClient: AxiosInstance = axios.create({
  baseURL: DEFAULT_BASE_URL,
  timeout: 15000,
  headers: {
    'Content-Type': 'application/json',
    Accept: 'application/json',
  },
});

// ============================================================================
// Data Models & Interfaces
// ============================================================================

Category {
  id?: number;
  name?: string;
}

Tag {
  id?: number;
  name?: string;
}

Pet {
  id: number;
  name: string;
  category?: Category;
  photoUrls?: string[];
  tags?: Tag[];
  status?: 'available' | 'pending' | 'sold';
}

NewPet {
  name: string;
  category?: Category;
  status?: 'available' | 'pending' | 'sold';
}

Order {
  id?: number;
  petId?: number;
  quantity?: number;
  shipDate?: string;
  status?: 'placed' | 'approved' | 'delivered';
  complete?: boolean;
}

// ============================================================================
// Parameter Types
// ============================================================================

ListPetsQueryParams {
  /** How many items to return at one time (max 100) */
  limit?: number;
  /** Status values that need to be considered for filter */
  status?: 'available' | 'pending' | 'sold';
}

// ============================================================================
// API Operations
// ============================================================================

/**
 * List all pets
 * Returns a paginated list of pets filtered by availability status.
 * @route GET /pets
 * @param params Query parameters
 */
listPets = async (
  params?: ListPetsQueryParams,
  config?: AxiosRequestConfig
): Promise<Pet[]> => {
  const response = await apiClient.get<Pet[]>('/pets', { params, ...config });
  return response.data;
};

/**
 * Create a pet
 * Add a new pet to the store inventory.
 * @route POST /pets
 * @param data Request payload
 */
createPet = async (
  data: NewPet,
  config?: AxiosRequestConfig
): Promise<Pet> => {
  const response = await apiClient.post<Pet>('/pets', data, { ...config });
  return response.data;
};

/**
 * Find pet by ID
 * Returns a single pet matching the ID.
 * @route GET /pets/{petId}
 * @param petId The id of the pet to retrieve
 */
getPetById = async (
  petId: number,
  config?: AxiosRequestConfig
): Promise<Pet> => {
  const response = await apiClient.get<Pet>(`/pets/${encodeURIComponent(String(petId))}`, { ...config });
  return response.data;
};

/**
 * Update pet by ID
 * Updates attributes of an existing pet record.
 * @route PUT /pets/{petId}
 * @param petId Path parameter
 * @param data Request payload
 */
updatePetById = async (
  petId: number,
  data: NewPet,
  config?: AxiosRequestConfig
): Promise<Pet> => {
  const response = await apiClient.put<Pet>(`/pets/${encodeURIComponent(String(petId))}`, data, { ...config });
  return response.data;
};

/**
 * Delete pet by ID
 * Deletes a pet record from database.
 * @route DELETE /pets/{petId}
 * @param petId Path parameter
 */
deletePetById = async (
  petId: number,
  config?: AxiosRequestConfig
): Promise<void> => {
  const response = await apiClient.delete<void>(`/pets/${encodeURIComponent(String(petId))}`, { ...config });
  return response.data;
};

/**
 * Place an order
 * Place an order for purchasing a pet.
 * @route POST /store/orders
 * @param data Request payload
 */
placeOrder = async (
  data: Order,
  config?: AxiosRequestConfig
): Promise<Order> => {
  const response = await apiClient.post<Order>('/store/orders', data, { ...config });
  return response.data;
};

/**
 * Find purchase order by ID
 * @route GET /store/orders/{orderId}
 * @param orderId Path parameter
 */
getOrderById = async (
  orderId: number,
  config?: AxiosRequestConfig
): Promise<Order> => {
  const response = await apiClient.get<Order>(`/store/orders/${encodeURIComponent(String(orderId))}`, { ...config });
  return response.data;
};
抽出エンドポイント数
7
スキーマ・型定義数
5
生成コード行数
171

完全ローカル高速解析

OpenAPI 3.0/3.1およびSwagger 2.0のパースとTypeScriptコード生成をすべてブラウザのメモリ内で瞬時に実行します。

サーバー送信ゼロのプライバシー

機密性の高い社内APIスキーマや認証エンドポイント仕様書が外部サーバーへ送信されることは一切ありません。

本番導入可能なTypeScript

厳格な型推論、パラメータインターフェース、インターセプター設定が含まれており、そのままプロジェクトに導入可能です。

技術リファレンス&アーキテクチャガイド

OpenAPI & SwaggerからAxios TypeScript APIクライアント生成 — リファレンスガイド

OpenAPI 3.0およびSwaggerのJSON/YAML仕様書から、型安全で保守性の高いAxios HTTPクライアント関数とパラメータインターフェースを自動生成します。

主要パラメータ&設定項目

clientStyle'functional' | 'class'

モジュール型のスタンドアロン関数形式か、カプセル化されたAxiosクラスタブ形式かを選択します。

初期値: 'functional'
axiosInstanceSourcestring

事前設定されたカスタムAxiosInstanceのインポート元パスまたは識別子(例: '@/lib/api-client')。

初期値: 'axios'
unwrapResponseboolean

AxiosResponse<T>ラッパー全体ではなく、自動的にresponse.dataを取り出して返します。

初期値: true
enumStyle'union' | 'enum'

OpenAPIの列挙型をTypeScriptの文字列リテラル型ユニオンまたはネイティブenumとして出力します。

初期値: 'union'
includeErrorTypesboolean

catchブロックでのAxiosError<T>ハンドリング用に型付きエラーレスポンススキーマを生成します。

初期値: true

プロの活用テクニック&推奨設定

認証インターセプターをAxiosInstanceに集約

各生成関数に個別にAuthorizationヘッダーを渡すのではなく、Axiosのリクエスト/レスポンスインターセプターでJWT付与やトークン自動更新を一括管理することを推奨します。

コンポーネント破棄時のAbortSignal連携

ReactのuseEffectフック内で呼び出す際、AxiosRequestConfigのsignalにAbortSignalを渡すことで、アンマウント時の不要なリクエスト破棄を安全に行えます。

OpenAPI配列パラメータのparamsSerializer設定

配列パラメータをquery文字列にシリアライズする際は、バックエンドの受け入れ仕様に合わせてAxiosのparamsSerializerでブラケット形式や反復形式を指定してください。

catchブロックでのaxios.isAxiosError型ガード活用

生成されたエラーインターフェースをaxios.isAxiosError<T>(err)と組み合わせることで、型キャストなしにバックエンドのエラー本文を型安全に参照できます。

よくあるトラブルと解決策

戻り値がAxiosResponse<unknown>またはanyになってしまう

OpenAPI仕様書の'responses.200.content.application/json.schema'が正しく定義されているか確認してください。スキーマが未指定の場合、Axiosは型推論できずunknownになります。

operationId未定義による関数名の重複・命名衝突

OpenAPI仕様書で各エンドポイントに一意のoperationIdを付与するか、HTTPメソッドとパスを組み合わせたフォールバック生成規則(例: getUserById)を有効化してください。

multipart/form-dataのファイルアップロードが正常に送信できない

ファイル送信時は生成関数にネイティブのFormDataインスタンスを渡し、Content-Typeヘッダーを手動指定せずブラウザにバウンダリ文字列を自動算出させてください。

よくある質問 (FAQ)

対応しているOpenAPIやSwaggerのバージョンは何ですか?▼

OpenAPI 3.1.x、3.0.x、およびレガシーなSwagger(OpenAPI 2.0)のJSONとYAML両形式に完全対応しています。

クエリパラメータはどのように型付けされてAxiosに渡されますか?▼

クエリパラメータは専用のTypeScriptインターフェースに変換され、Axiosリクエストの'params'プロパティへ型安全に渡されます。

カスタムAxiosインスタンス(ベースURLや認証付き)を指定できますか?▼

はい。'axiosInstanceSource'に共通インスタンスのパス(例: '@/lib/axios')を指定することで、全生成クライアントで共通の設定を共有できます。

仕様書データが外部サーバーへ送信・保存されることはありますか?▼

いいえ。YAML/JSONの解析、スキーマ解決、TypeScriptコード生成の全処理は100%クライアント側のブラウザ内メモリで完結します。

4xxや5xxのエラーレスポンスはどのように型定義されますか?▼

仕様書に定義されたHTTPエラーステータスごとに型インターフェースが生成され、axios.isAxiosError<ApiErrorResponse>(err)で型安全に捕捉できます。

関連するおすすめ開発ツール

すべてのツール →
OpenAPI・Swagger ネイティブFetchクライアント自動生成 開発者向け技術リファレンス開発ツール

依存関係ゼロの標準Fetch APIを活用したTypeScriptクライアントコードを生成。クエリ文字列のシリアライズ、ヘッダー設定、型定義を自動完結。

ツールを開く→
Drizzle ORM スキーマから SQL CREATE TABLE DDL 生成ツール開発ツール

Drizzle ORM の pgTable、mysqlTable、sqliteTable 定義を高精度に解析し、実行可能な SQL CREATE TABLE マイグレーションスクリプトへと変換します。

ツールを開く→
GitHub Actions CI/CD ワークフロー YAML 生成ガイド開発ツール

Node.js、Go、Python、Docker ビルド、ユニットテスト、自動リリースに対応した本番向け GitHub Actions ワークフロー YAML パイプラインを安全かつ迅速に構築します。

ツールを開く→
Linux Logrotate 設定ファイル生成ツール (保持期間 & 圧縮設定ガイド)開発ツール

日次・週次ローテーション、gzip圧縮、dateext、ファイルサイズ制限、postrotateスクリプトを含む本番環境用 /etc/logrotate.d/ 設定ファイルを安全に生成。

ツールを開く→
Ubuntu Netplan ネットワーク設定 YAML 生成ツール開発ツール

Ubuntu 20.04/22.04/24.04 向けの Netplan YAML 設定(静的IP、DHCP、DNSネームサーバー、ゲートウェイルート、仮想ブリッジ、BOND構成)をブラウザ上で安全に生成。

ツールを開く→
SQL DDL から Python SQLAlchemy 2.0 モデル生成ツール開発ツール

SQL の CREATE TABLE 文を、最新の Mapped および mapped_column 型注釈を備えた堅牢な Python SQLAlchemy 2.0 DeclarativeBase モデルへ即座に変換します。

ツールを開く→