次の方法で共有


開発プロキシの概要

開発プロキシは、回復性のあるアプリの構築に役立つクラウド API の動作とエラーをシミュレートするのに役立つコマンド ライン ツールです。

このチュートリアルでは、開発プロキシをインストール、実行、構成する方法について説明します。

問題が発生した場合は、 の新しい問題を発生させてお気軽にお問い合わせください お手伝いします。

開発プロキシをインストールする

開発プロキシをインストールする最も簡単な方法は、winget を使用することです。 または、開発プロキシを手動でインストールすることもできます。

winget を使用して開発プロキシをインストールするには、次のコマンドを実行します。

winget install Microsoft.DevProxy --silent

重要

開発プロキシ インストーラーは、PATH に新しいエントリを追加します。 インストール後に開発プロキシを使用するには、コマンド プロンプトを再起動して、PATH 環境変数が更新されていることを確認する必要があります。

Note

最新のプレビュー機能を試すには、Dev Proxy のベータ 版をインストールします。

winget を使用して開発プロキシをインストールするには、次のコマンドを実行します。

winget install Microsoft.DevProxy.Beta --silent

開発プロキシのベータ 版を実行するには、次のコマンドを使用します。 devproxy-beta

開発プロキシをインストールする最も簡単な方法は、Homebrew を使用することです。 または、開発プロキシを手動でインストールすることもできます。

Homebrew を使用して開発プロキシをインストールするには、次のコマンドを実行します。

brew tap microsoft/dev-proxy
brew install dev-proxy

Note

最新のプレビュー機能を試すには、Dev Proxy のベータ 版をインストールします。

Homebrew を使用して開発プロキシをインストールするには、次のコマンドを実行します。

brew tap microsoft/dev-proxy
brew install dev-proxy-beta

開発プロキシのベータ 版を実行するには、次のコマンドを使用します。 devproxy-beta

開発プロキシをインストールする最も簡単な方法は、セットアップ スクリプトを使用することです。 または、開発プロキシを手動でインストールすることもできます。

セットアップ スクリプトを使用して開発プロキシをインストールするには、次のコマンドを実行します。

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 がコンピューターからの要求をインターセプトして正常に応答できることを確認します。 最初の実行後にこれらの手順を繰り返す必要はありません。

  1. 開発プロキシを起動します。 コマンド プロンプト セッションを開きます。 「devproxy」と入力して、Enter キーを押します。
  2. 信頼証明書。 開発プロキシは、 Dev Proxy CAという名前の証明書をインストールします。 警告が表示されます。 Yes選択して、証明書をインストールすることを確認します。 開発プロキシでは、この証明書を使用して、コンピューターから送信された HTTPS トラフィックの暗号化を解除します。
  3. ファイアウォール アクセスを許可する。 Windows ファイアウォールによってプロキシがブロックされます。 警告が表示されます。 [ Allow access ] ボタンを選択して、ファイアウォール経由のトラフィックを許可します。
  1. 開発プロキシを起動します。 コマンド プロンプト セッションを開きます。 「devproxy」と入力して、Enter キーを押します。
  2. 信頼証明書。 開発プロキシは、 Dev Proxy CAという名前の証明書をインストールします。この証明書を使用して、コンピューターから送信された HTTPS トラフィックの暗号化を解除します。 警告が表示されます。 y キーを押して、証明書を信頼することを確認します。
  3. 受信接続を受け入れる。 警告が表示されます。 Allowを選択して確定します。
  1. 開発プロキシを起動します。 コマンド プロンプト セッションを開きます。 「devproxy」と入力して、Enter キーを押します。

  2. 信頼証明書。 開発プロキシでは、カスタム 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 キーを押して、開発プロキシを安全に停止します。

次のステップ

開発プロキシを使用して、独自のアプリケーションのランダム エラーをシミュレートする方法について説明します。