API コレクション変換

Postman、Insomnia、Bruno、OpenAPI、cURL のリクエストテキストをインポートし、抽出したリクエストを OpenAPI、Postman、cURL コマンド、Fetch コードとしてエクスポートします。

ブラウザ内でローカルに実行
All parsing and analysis stays in this browser. Nothing is uploaded or sent to an API.

このコンバーターは、コピーしたテキストまたは選択したローカルファイルを読み取ります。API エンドポイントを呼び出したり、リモートでコレクションをインポートしたりすることはありません。

変換サマリー
見つかったリクエスト
名前メソッドURLヘッダー
コレクションまたはリクエストを貼り付けると、ローカル変換のプレビューが表示されます。
出力形式

一般的な開発者向けフォーマット間で API リクエストを変換します。

生成された出力を確定する前に確認してください。認証情報はこのブラウザタブ内にのみ保持され、共有する前に安全な変数に置き換える必要があります。

コレクションの変換手順

入力は 5 種類(Postman コレクション、Insomnia エクスポート、Bruno リクエスト、OpenAPI / Swagger ドキュメント、cURL コマンド)、出力は 4 種類(OpenAPI 3.0.3、Postman v2.1、cURL、Fetch JavaScript)です。20 通りの組み合わせすべてを、実際のリクエストデータで実行して確認しました。

変換はブラウザーの JavaScript で行います。ネットワークパネルを開いた状態で 2.2 MB のコレクションを変換しても通信は 1 件も発生せず、コレクション・URL・認証情報は送信されず、入力に含まれるエンドポイントが呼ばれることもありません。

  1. テキストを入力欄に貼り付けるか、ローカルファイルを選択から .json / .bru / .txt ファイルを選びます。自動判定は一般的な 5 形式を認識します。名前付きの形式は、自動判定が誤る入力のためにあります。
  2. 出力に OpenAPI 3.0、Postman v2.1、cURL、Fetch JavaScript のいずれかを選び、ローカルで変換を押します。サマリーには、元データから見つかったリクエスト数と統合された件数が出ます。
  3. 結果の前に一覧表を確認します。名前・メソッド・URL・有効なヘッダー数が、先頭 100 行まで表示されます。
  4. 出力をコピーまたは出力をダウンロードで結果を取り出します。ファイル名は kivtools-api-conversion.json / .js / .txt です。クリアは入力と前回の結果をまとめて消します。

変換の仕様と制限

各入力から読み取る内容

Postman のフォルダーは「フォルダー / リクエスト」という名前に展開され、コレクション自身の変数リストの値が URL・ヘッダー・ボディに反映されます。ファイル内で定義された {{baseUrl}} は実際のアドレスとして展開され、定義のないプレースホルダーは推測せずそのまま残します。

Swagger 2.0 は host・basePath・schemes から読み取り、in: body のパラメーターは宣言された consumes のメディアタイプでリクエストボディに、in: formData のフィールドは multipart のフォームデータになります。Bruno ファイルからはメソッドブロック・URL・ヘッダーブロックを読み取り、それ以外のブロックは使いません。

解釈する cURL オプション

対応するのは -X/--request、-H/--header、-d/--data/--data-raw/--data-binary/--data-urlencode、-F/--form/--form-string、-u/--user、-A/--user-agent、-b/--cookie、-e/--referer、--url で、行末のバックスラッシュによる継続行も解析前に連結します。-u user:pass は Authorization: Basic ヘッダーになり、-A・-b・-e は User-Agent・Cookie・Referer になります。

ファイル送信も保持されます。-F "file=@photo.png" は curl と同じくメソッドを POST に変え、Postman ではファイルフィールド、cURL では -F 引数、Fetch では FormData のエントリーとして出力されます。ディスクから読むボディはファイル参照のまま残り、-d @payload.json は --data @payload.json として書き出され、--data-raw @payload.json は文字列のままの意味を保ちます。

OpenAPI 出力が従う規則

パスのテンプレートは往復しても壊れません。ある OpenAPI ドキュメントから別の OpenAPI ドキュメントへ変換しても /items/{id} は /items/{id} のままで、/items/%7Bid%7D にはなりません。クエリ文字列は URL にあった値を持つ query パラメーターになり、1 つのパスに 2 つのメソッドがあれば 1 つのパス項目に 2 つの操作として出力されます。

OpenAPI では同じパスと同じメソッドの操作を 2 つ持てないため、重複した組は統合し、統合した件数をステータス行に表示します。ホストが異なるリクエストはそれぞれのサーバーを保持し、最初のホストがドキュメントのサーバーになります。

結果が何であり、何でないか

生成される OpenAPI に入るのはスキーマではなくサンプル値です。ボディは example オブジェクトになり、各操作には 200 Successful response という仮の応答が付きます。編集の出発点になるドキュメントであり、検証済みの仕様ではなく、元データになかったレスポンスモデルを勝手に作ることもありません。

ヘッダーと認証情報はそのままコピーされるため、結果を共有する前に変数へ置き換えるようページ内で案内しています。変換に失敗した場合は前回の結果を画面に残さず消去するので、古いドキュメントを今回の結果と取り違えることはありません。大きな入力も高速で、2.2 MB・5,000 リクエストが約 65 ミリ秒、43 KB・100 リクエストが約 10 ミリ秒で処理されます。

最近使ったツール: