プロキシ API

Important

v3.3.1 以降、すべての Dev Proxy API 要求には Authorization: Bearer <token> ヘッダーが必要です。有効なトークンを返さない要求 401 Unauthorized。

開発プロキシには、プログラムでプロキシを操作できる Web API が付属しています。 API は、 プロキシ設定で指定された IP アドレスとポートで使用できます。

開発プロキシは、実行中のインスタンスごとに一意のトークンを生成し、インスタンスを開始したユーザーのみがアクセスできるファイルに格納します。 devproxy statusまたはdevproxy api tokenを使用してトークンを取得します。 CI環境変数が設定されている場合は、devproxy api tokenを使用します。開発プロキシでは、状態とスタートアップ出力からトークンが省略されるためです。

たとえば、別のツールが開発プロキシを起動してその API を呼び出すときなど、生成されたトークンではなく既知のトークンを使用するには、開発プロキシを開始する前に DEV_PROXY_API_TOKEN 環境変数を設定するか、 --env オプションを使用して渡します。 値は 32 文字以上で、末尾の = 埋め込みをカウントせず、ASCII 文字、数字、および文字 -、 .、 _、 ~、 +、および /のみを含めることができます。必要に応じて、 = パディングが続きます。 開発プロキシは、周囲の空白をトリミングします。 値が有効でない場合、開発プロキシは起動せず、エラーで終了します。 開発プロキシは引き続きトークンを格納するため、 devproxy status、 devproxy api token、 devproxy stop は動作し続けます。

Authorization ヘッダーにトークンを含めます。

Authorization: Bearer <token>

有効なトークンがない要求は、 401 Unauthorizedを返します。 ブラウザー要求は、 apiAllowedOrigins 設定に一覧表示されている配信元からも送信される必要があります。 その他の原点は 403 Forbiddenを返します。

操作

次の一覧は、使用可能な API 操作を示しています。

GET /proxy

現在実行中の開発プロキシ インスタンスに関する情報を含む ProxyInfo のインスタンスを返します。

例: 現在実行中の開発プロキシ インスタンスに関する情報を取得する

要求:

GET http://localhost:8897/proxy
Authorization: Bearer <token>

応答:

200 OK

{
  "recording": false,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

POST /proxy

現在実行中の開発プロキシ インスタンスを制御します。 スクリプトまたは CI パイプラインからの記録を開始および停止するには、「 スクリプトと CI からの記録」を参照してください。

例: 記録を開始する

要求:

POST http://localhost:8897/proxy
Authorization: Bearer <token>
content-type: application/json

{
  "recording": true
}

応答:

200 OK

{
  "recording": true,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

例: 記録を停止する

要求:

POST http://localhost:8897/proxy
Authorization: Bearer <token>
content-type: application/json

{
  "recording": false
}

応答:

200 OK

{
  "recording": false,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

記録を停止してレポートを生成する

記録を停止すると、要求のキャプチャを停止する以上の処理が行われます。 Dev Proxy の記録中に {"recording": false} を送信すると、Dev Proxy は、記録された要求を構成ファイルに記載されている順序で、有効なすべてのプラグインに渡します。 これは、開発プロキシが実行されているコンソールで s キーを押すのと同じです。 この手順では、次の操作を行います。

  • レポート プラグインは、 記録された要求を分析し、レポートを生成します。
  • レポーターはレポート をファイルに変換します。 各レポーターは、ExecutionSummaryPlugin_MarkdownReporter.mdなど、<plugin>_<reporter>.<extension>という名前のレポートごとに 1 つのファイルを書き込みます。 <plugin> はレポートを生成したプラグイン インスタンスの名前で、 <reporter> はレポーター インスタンスの名前です。 その名前のファイルが既に存在する場合、レポーターはタイムスタンプ (たとえば、 ExecutionSummaryPlugin_MarkdownReporter_20261105114500.md) を追加します。
  • ジェネレーター プラグインは、 OpenApiSpecGeneratorPluginと同様に、生成されたファイルを書き込みます。

開発プロキシは、これらのファイルを現在の作業ディレクトリ (開発プロキシを開始したディレクトリ) に書き込みます。

API は、すべてのプラグインが記録された要求の処理を完了した後に応答します。 言語モデルを呼び出すプラグインなど、使用するプラグインによっては、この手順に時間がかかる場合があるため、HTTP クライアントが早くタイムアウトしないようにしてください。 応答が到着すると、レポート ファイルがディスクに書き込まれます。

Dev Proxy では、記録された要求の処理の進行状況もログに記録されます。

ログメッセージ Meaning
DONE すべてのプラグインは、記録された要求の処理を完了しました。
No requests to process プラグインで、分析する記録された要求が見つかりませんでした。
An error occurred in a plugin プラグインが失敗しました。 開発プロキシは次のプラグインで続行され、すべてのプラグインが完了すると DONE ログが記録されます。

{"recording": false}送信時に Dev Proxy が記録されていない場合、Dev Proxy は要求を処理せず、ファイルを書き込まず、DONEログを記録しません。

Tip

記録中に POST /proxy/stopproxy を使用して開発プロキシを停止した場合、Dev Proxy は終了する前に、記録された要求も処理します。 ただし、その API は直ちに応答するため、レポートの準備が整っていることを確認するには、開発プロキシ プロセスが終了するまで待つ必要があります。 レポートの準備ができたら正確に把握するには、最初に記録を停止し、応答を待ってから、Dev Proxy を停止します。

開発プロキシを起動し、API を使用して記録を制御し、開発プロキシが完了するまで待機する完全なスクリプトについては、「 CI/CD シナリオでの開発プロキシの使用」を参照してください。

POST /proxy/jwtToken

JSON Web トークン (JWT) を生成します。

要求:

POST http://localhost:8897/proxy/jwtToken
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Dev Proxy",
  "audiences": [
    "https://myserver.com"
  ],
  "issuer": "dev-proxy",
  "roles": [
    "admin"
  ],
  "scopes": [
    "Post.Read",
    "Post.Write"
  ],
  "claims": {
    "claim1": "value",
    "claim2": "value"
  },
  "validFor": 60
}

Note

登録された要求 ( iss、 sub、 aud、 exp、 nbf、 iat、 jtiなど) がトークンに自動的に追加されます。 要求でこれらの要求のいずれかを指定した場合、API は指定した値を無視します。

応答:

200 OK

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkRldiBQcm94eSIsInN1YiI6IkRldiBQcm94eSIsImp0aSI6IjkyZjM5YzciLCJzY3AiOlsiUG9zdC5SZWFkIiwiUG9zdC5Xcml0ZSJdLCJyb2xlcyI6ImFkbWluIiwiY2xhaW0xIjoidmFsdWUiLCJjbGFpbTIiOiJ2YWx1ZSIsImF1ZCI6Imh0dHBzOi8vbXlzZXJ2ZXIuY29tIiwibmJmIjoxNzI3MTk4MjgyLCJleHAiOjE3MjcyMDE4ODIsImlhdCI6MTcyNzE5ODI4MiwiaXNzIjoiZGV2LXByb3h5In0.E_Gj9E58OrAh9uHgc-TW8DYfq8YHFrhaUTpKA4yXEIg"
}

GET /proxy/logs

Dev Proxy ログ出力を返します。 logs コマンドに相当します。 このエンドポイントは、開発プロキシがデタッチ モードで実行されている場合にのみ使用できます。 それ以外の場合、API は 404 Not Foundを返します。

Query parameter (クエリ パラメーター) 説明 Default
lines ログの末尾から返される行数 50
follow trueすると、サーバー送信イベントとして新しいログ行がストリーミングされます false
since 指定した日時以降にログに記録された行のみを返します。 期間 (たとえば、 30s、 5m、 1h、 1d) または ISO 8601 の日時 ( 2026-01-24T14:00:00 や 2026-01-24T14:00:00Zなど) を使用します。 タイムスタンプにタイム ゾーン オフセットが含まれていない場合、Dev Proxy はローカル タイム ゾーンを使用します。 n/a

sinceパラメーターは、ログ行を返すときとストリーミングするときの両方で、完全な日付と時刻でログ行をフィルター処理します。 Dev Proxy は、各要求を開始時刻でフィルター処理するため、指定した時刻より前に開始された要求は、後で完了した場合でも返されません。

既定では、API はログ行をプレーン テキストとして返します。 ログ エントリの JSON 配列を取得するには、 Accept ヘッダーを application/json に設定します。 ログ行をサーバー送信イベントとしてストリーミングするには、 Accept ヘッダーを text/event-stream に設定するか、 follow を true に設定します。

要求:

GET http://localhost:8897/proxy/logs?lines=10
Authorization: Bearer <token>

応答:

200 OK
content-type: text/plain

[last 10 lines of the Dev Proxy log]

POST /proxy/mockrequest

モック要求を発生させます。 開発プロキシが実行されているコンソールで w を押すことと同じです。 API は、モック要求が完了した後に応答します。

要求:

POST http://localhost:8897/proxy/mockrequest
Authorization: Bearer <token>

応答:

204 No Content

GET /proxy/rootCertificate?format=crt

DEV Proxy が HTTPS 要求の暗号化を解除するために使用する PEM (プライバシー強化メール) 形式のルート証明書の公開キーをダウンロードします。 この API は、Docker コンテナーで開発プロキシを実行しているときに、ホスト上のルート証明書を信頼する場合に役立ちます。

現時点では、サポートされている唯一の形式は crt。 他の形式を指定した場合、または書式をまったく指定しない場合、API は 400 Bad Request エラーを返します。

要求:

GET http://localhost:8897/proxy/rootCertificate?format=crt
Authorization: Bearer <token>

応答:

content-type: application/x-x509-ca-cert

-----BEGIN CERTIFICATE-----
[base64 encoded certificate]
-----END CERTIFICATE-----

POST /proxy/stopproxy

開発プロキシを正常にシャットダウンします。 Dev Proxy が記録している場合は、 記録が停止され、終了する 前にレポートが生成されます。 API は、開発プロキシのシャットダウンが完了する直前に応答します。

要求:

POST http://localhost:8897/proxy/stopproxy
Authorization: Bearer <token>

応答:

202 Accepted

開発プロキシは、シャットダウンを開始するとすぐに 202 Accepted を返します。 応答は、開発プロキシが終了したことを意味するわけではありません。 シャットダウン中、開発プロキシ:

  1. 新しいプロキシ要求の受け入れを停止します。 開発プロキシがシステム プロキシとして登録されている場合は、以前のシステム プロキシ設定が復元されます。 開発プロキシは、開いている接続が閉じるまで最大 5 秒待ってから、残りの接続をすべて閉じます。
  2. 記録がオンの場合は記録を停止し、記録された要求に対してレポート プラグインを実行します。これは、自分で記録を停止したときと同じです。 プラグインが完了すると、Dev Proxy はレポートとログを DONE書き込みます。
  3. インスタンス情報を削除し、 devproxy status して devproxy stop 一覧表示しないようにします。
  4. 終了コード 0で終了します。

Dev Proxy は、シャットダウン時に信頼された証明書ストアからルート証明書を削除しません。 証明書を削除するには、 証明書の削除を使用します。

シャットダウンには通常数秒かかります。 プラグインが大規模な記録を処理する場合、より長い時間がかかる場合があります。 シャットダウンが開始されると、API に到達できなくなるため、API をポーリングして開発プロキシが終了したかどうかを確認しないでください。 代わりに、次のいずれかのオプションを使用します。

  • 出力されるプロセス ID (PID) が終了するまで待 devproxy --detach 。
  • 終了コード 1が返されるまでdevproxy status --pid <pid>を実行します。これは、インスタンスが実行されなくなったことを意味します。 詳細については、 状態を参照してください。
  • 記録していた場合は、Dev Proxy ログで DONE メッセージを確認します。このメッセージは、レポート プラグインの完了後にログに記録されます。 例については、「 CI/CD シナリオでの開発プロキシの使用」を参照してください。

たとえば、デタッチされた Dev Proxy インスタンスが Linux または macOS で終了するのを待機するには、次のようにします。

# DEVPROXY_PID is the PID that devproxy --detach printed
# TOKEN is the API token from devproxy api token
curl -X POST http://localhost:8897/proxy/stopproxy -H "Authorization: Bearer $TOKEN"

while ./devproxy/devproxy status --pid $DEVPROXY_PID > /dev/null 2>&1; do
  sleep 1
done

たとえば、 kill -9を使用して、開発プロキシ プロセスを強制的に終了しないようにします。 この方法でプロセスを終了しても、Dev Proxy は記録をフラッシュしたり、システム プロキシ設定を復元したりしません。 コマンド ラインから開発プロキシを停止するには、 stop を使用します。これはこの API を呼び出し、開発プロキシが終了するまで最大 10 秒待機します。

モデル

ProxyInfo

現在実行中の開発プロキシ インスタンスに関する情報。

プロパティ タイプ 説明
recording boolean プロキシが現在要求を記録しているかどうか
configFile string 開発プロキシが使用している構成ファイルへのパス (読み取り専用)

JwtOptions

JWT トークンを生成するためのオプション。

プロパティ タイプ 説明
name string トークンを作成するユーザーの名前
audiences string[] トークンを作成する対象ユーザー
issuer string トークンの発行者
roles string[] トークンに追加するロール要求
scopes string[] トークンに追加するスコープ要求
claims KeyValuePair トークンに追加する要求
validFor number トークンが有効な期間 (分単位)
signingKey string トークンの署名に使用するキー。 32 文字以上にする必要があります。 指定しない場合は、ランダムに生成されたキーを使用します。

JwtInfo

JWT トークンに関する情報。

プロパティ タイプ 説明
token string JWT トークン

参照