開発プロキシの概要
開発プロキシは、回復性のあるアプリの構築に役立つクラウド API の動作とエラーをシミュレートするのに役立つコマンド ライン ツールです。
このチュートリアルでは、開発プロキシをインストール、実行、構成する方法について説明します。
問題が発生した場合は、 の新しい問題を発生させてお気軽にお問い合わせください お手伝いします。
開発プロキシをインストールする
開発プロキシをインストールする最も簡単な方法は、winget を使用することです。 または、開発プロキシを手動でインストールすることもできます。
winget を使用して開発プロキシをインストールするには、次のコマンドを実行します。
winget install Microsoft.DevProxy --silent
重要
開発プロキシ インストーラーは、PATH に新しいエントリを追加します。 インストール後に開発プロキシを使用するには、コマンド プロンプトを再起動して、PATH 環境変数が更新されていることを確認する必要があります。
開発プロキシをインストールする最も簡単な方法は、Homebrew を使用することです。 または、開発プロキシを手動でインストールすることもできます。
Homebrew を使用して開発プロキシをインストールするには、次のコマンドを実行します。
brew tap microsoft/dev-proxy
brew install dev-proxy
開発プロキシをインストールする最も簡単な方法は、セットアップ スクリプトを使用することです。 または、開発プロキシを手動でインストールすることもできます。
セットアップ スクリプトを使用して開発プロキシをインストールするには、次のコマンドを実行します。
bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"
PowerShell を使っている場合は、次のコマンドを実行します。
(Invoke-WebRequest https://aka.ms/devproxy/setup.ps1).Content | Invoke-Expression
Note
最新のプレビュー機能を試すには、Dev Proxy のベータ 版をインストールします。
セットアップ スクリプトを使用して開発プロキシをインストールするには、次のコマンドを実行します。
bash -c "$(curl -sL https://aka.ms/devproxy/setup-beta.sh)"
PowerShell を使っている場合は、次のコマンドを実行します。
(Invoke-WebRequest https://aka.ms/devproxy/setup-beta.ps1).Content | Invoke-Expression
開発プロキシのベータ 版を実行するには、次のコマンドを使用します。 devproxy-beta
開発プロキシを初めて起動する
マシンで開発プロキシを初めて起動するときは、いくつかの手順に従って、Dev Proxy がコンピューターからの要求をインターセプトして正常に応答できることを確認します。 最初の実行後にこれらの手順を繰り返す必要はありません。
- 開発プロキシを起動します。 コマンド プロンプト セッションを開きます。 「
devproxy
」と入力して、Enter キーを押します。 - 信頼証明書。 開発プロキシは、
Dev Proxy CA
という名前の証明書をインストールします。 警告が表示されます。Yes
選択して、証明書をインストールすることを確認します。 開発プロキシでは、この証明書を使用して、コンピューターから送信された HTTPS トラフィックの暗号化を解除します。 - ファイアウォール アクセスを許可する。 Windows ファイアウォールによってプロキシがブロックされます。 警告が表示されます。 [
Allow access
] ボタンを選択して、ファイアウォール経由のトラフィックを許可します。
- 開発プロキシを起動します。 コマンド プロンプト セッションを開きます。 「
devproxy
」と入力して、Enter キーを押します。 - 信頼証明書。 開発プロキシは、
Dev Proxy CA
という名前の証明書をインストールします。この証明書を使用して、コンピューターから送信された HTTPS トラフィックの暗号化を解除します。 警告が表示されます。 y キーを押して、証明書を信頼することを確認します。 - 受信接続を受け入れる。 警告が表示されます。
Allow
を選択して確定します。
開発プロキシを起動します。 コマンド プロンプト セッションを開きます。 「
devproxy
」と入力して、Enter キーを押します。信頼証明書。 開発プロキシでは、カスタム SSL 証明書を使用して、コンピューターから送信された HTTPS トラフィックの暗号化を解除します。
重要
次の手順は Ubuntu 用です。 その他の Linux ディストリビューションでは、手順が異なる場合があります。
証明書をインストールして信頼するには、新しいコマンド プロンプトで次のコマンドを実行します。
# Export Dev Proxy root certificate openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:"" # Install the certificate sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/ # Update certificates sudo update-ca-certificates
コマンド プロンプトに次の出力が表示されます。
info 8 error responses loaded from devproxy-errors.json
info Dev Proxy API listening on http://localhost:8897...
info Dev Proxy Listening on 127.0.0.1:8000...
Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy
既定では、開発プロキシは次の構成が行われます。
- JSON プレースホルダー API エンドポイントに対して行われた要求をインターセプトする
- 失敗率が 50% の API エラー応答と API 調整をシミュレートする
要求をインターセプトする
開発プロキシは、コンピューター上の任意のアプリケーションから既知の URL に対して行われた要求をインターセプトします。 要求が検出されると、Dev Proxy は API に要求を渡すか (アクションを実行しない)、応答を返します。
- コマンド ラインから JSON プレースホルダー API に要求を送信し、プロキシ プロセスに戻って出力を表示します。
PowerShell で、 Invoke-WebRequest
コマンドレットを使用して、JSON プレースホルダー API に GET 要求を送信します。
Invoke-WebRequest -Uri https://jsonplaceholder.typicode.com/posts
curl
を使用する場合は、次のコマンドを使用して JSON プレースホルダー API に GET 要求を送信します。
curl -ikx http://localhost:8000 https://jsonplaceholder.typicode.com/posts
Postman などの API クライアントを使用して、GET 要求をhttps://jsonplaceholder.typicode.com/posts
に送信することもできます。
エントリには、受信要求と開発プロキシが実行したアクションに関する基本情報が表示されます。 開発プロキシは、50% の確率でエラー応答をシミュレートします。 要求でエラーが返されない場合は、Dev Proxy によってエラーが渡されます。
req ╭ GET https://jsonplaceholder.typicode.com/posts
api ╰ Passed through
- エラー応答が返されるまで、コマンド ラインから JSON プレースホルダー API への要求の送信を繰り返します。
req ╭ GET https://jsonplaceholder.typicode.com/posts
api ╰ Passed through
req ╭ GET https://jsonplaceholder.typicode.com/posts
oops ╰ 403 Forbidden
開発プロキシがエラー応答を返すと、エントリに chaos
ラベルが表示されます。
- JSON プレースホルダー API で使用可能な他のエンドポイントに要求を送信してみてください
https://jsonplaceholder.typicode.com/posts
https://jsonplaceholder.typicode.com/posts/1
https://jsonplaceholder.typicode.com/posts/1/comments
https://jsonplaceholder.typicode.com/comments?postId=1
開発プロキシを安全に停止する
Dev Proxy を実行する必要がなくなった場合は、常に安全に停止する必要があります。
- Ctrl + C キーを押して、開発プロキシを安全に停止します。
コマンド プロンプト セッションをシャットダウンすると、開発プロキシがシステム プロキシとして正しく登録解除されず、 common の問題が発生する可能性があります。
監視する URL を更新する
既定では、dev Proxy は、 JSON プレースホルダー API に対して行われた要求をインターセプトするように構成されています。 任意の HTTP API への要求をインターセプトするように Dev Proxy を構成できます。
- コマンド ライン (
devproxy config
) で実行して、開発プロキシ構成ファイルを開きます。 urlsToWatch
配列を見つけます。
"urlsToWatch": [
"https://jsonplaceholder.typicode.com/*"
],
urlsToWatch
配列は、既知の URL を表します。 開発プロキシは、現在のエントリから任意のエンドポイントへの要求を監視します。 エントリでは、URL の後にアスタリスクがワイルドカードとして使用されます。 この配列にさらにエントリを追加すると、Dev Proxy が監視する URL が拡張されます。
開発プロキシが特定のエンドポイントに対して行われた要求をインターセプトしないようにすることを考えてみましょう。
urlsToWatch
配列に新しいエントリを追加します。
"urlsToWatch": [
"!https://jsonplaceholder.typicode.com/posts/2",
"https://jsonplaceholder.typicode.com/*"
],
URL の先頭にある感嘆符は、その URL に一致するすべての要求を無視するように Dev Proxy に指示します。 URL には感嘆符とアスタリスクを組み合わせることができます。
- コマンド ラインで「
devproxy
」と入力し、 Enter キーを押して開発プロキシを起動します。 - コマンド ラインから
https://jsonplaceholder.typicode.com/posts/2
に要求を送信し、出力を表示します。
無視された URL が要求と一致した場合、Dev Proxy は要求を処理しないため、出力は表示されません。
urlsToWatch
配列に URL が表示される順序は重要です。 開発プロキシは、これらの URL を順番に処理します。 URL が一致しても、再び処理されることはありません。 そのため、URL を最初に配置すると、次の URL が処理される前に要求が無視されます。
変更失敗率
既定では、Dev Proxy は、監視対象の URL に対して 50% の確率で要求を失敗するように構成されています。 要求がエラー応答を返す可能性を増減できます。
JSON プレースホルダー API に対するすべての要求がエラー応答を返すように、エラー率を更新してみましょう。
- コマンド ライン (
devproxy config
) で実行して、開発プロキシ構成ファイルを開きます。 rate
プロパティを見つけ、値を50
から100
に更新します。
devproxyrc.json
ファイルには、開発プロキシの起動時に使用される構成設定が含まれています。 構成設定を変更する場合は、変更を永続化するために、常に Dev Proxy を停止して起動する必要があります。
- コマンド ラインで「
devproxy
」と入力し、 Enter キーを押して開発プロキシを起動します。 - コマンド ラインから JSON プレースホルダー API に要求を送信し、出力を表示します。
または、開発プロキシの起動時に --failure-rate
オプションを使用して、実行時に構成設定をオーバーライドすることもできます。
devproxy --failure-rate 100
- Ctrl + C キーを押して、開発プロキシを安全に停止します。
調整をシミュレートする
既定では、開発プロキシは、一般的な 400 と 500 のエラー応答の範囲を返します。 これらのエラー応答は、独自のニーズに合わせてカスタマイズできます。
開発プロキシでは、 plugins を使用してさまざまな API 動作を有効にします。既定では、2 つのプラグインが有効になります。
- GenericRandomErrorPlugin プラグインは、開発プロキシがエラー応答で応答する機能を提供します。
- RetryAfterPlugin プラグインは、エラー応答の Retry-After ヘッダーに動的な値を挿入する機能を開発プロキシに提供します。
Dev Proxy が常に 429 Too Many requests
エラー応答を返して調整をシミュレートするように構成を変更しましょう。
まず、エラー定義を含むファイルの場所を見つけます。
- コマンド ライン (
devproxy config
) で実行して、開発プロキシ構成ファイルを開きます。 plugins
配列で、GenericRandomErrorPlugin プラグインのエントリを見つけます。configSection
プロパティの値に注意してください。- ファイルの下にある
genericRandomErrorPlugin
オブジェクトを見つけます。errorsFile
プロパティの値に注意してください。
ヒント
Dev Proxy を起動すると、エラー ファイルの場所も出力に表示されます。
- 開発プロキシのインストール フォルダーで、テキスト エディターで
devproxy-errors.json
を開きます。 429
応答を除き、responses
配列内のすべての応答エントリを削除します。
{
"$schema": "https://raw.githubusercontent.com/microsoft/dev-proxy/main/schemas/v0.20.0/genericrandomerrorplugin.schema.json",
"errors": [
{
"request": {
"url": "https://jsonplaceholder.typicode.com/*"
},
"responses": [
{
"statusCode": 429,
"body": {
"message": "Too Many Requests",
"details": "The user has sent too many requests in a given amount of time (\"rate limiting\")."
},
"headers": {
"Retry-After": "@dynamic"
}
}
]
}
]
}
- コマンド ラインで「
devproxy
」と入力し、 Enter キーを押して開発プロキシを起動します。 - コマンド ラインから JSON プレースホルダー API に要求を送信し、出力を表示します。
req ╭ GET https://jsonplaceholder.typicode.com/posts
oops ╰ 429 TooManyRequests
- Ctrl + C キーを押して、開発プロキシを安全に停止します。
次のステップ
開発プロキシを使用して、独自のアプリケーションのランダム エラーをシミュレートする方法について説明します。
Dev Proxy