次の方法で共有


プラグインのアーキテクチャ

プラグインは、特定の開発プロキシの動作を導入する開発プロキシに登録された .NET クラスです。 プラグインは、API の使用状況に関するリアルタイム ガイダンスを提供したり、API の動作をシミュレートしたり、複数の API 要求を分析したり、レポートを生成したりできます。 開発プロキシには、次の 4 種類のプラグインがあります。

  • HTTP 要求と応答をインターセプトし、それらを分析および変更できるプラグインをインターセプトする
  • ローカル実行可能ファイルとの stdin/stdout/stderr 通信をインターセプトする STDIO プラグイン
  • Dev Proxy によって記録された要求で実行されるレポート プラグイン
  • レポート プラグインによって収集されたデータに基づいてレポートを生成するレポーター

プラグインは、devproxyrc.json ファイルに登録します。 このファイルには、読み込むプラグインとその構成の一覧が含まれています。

開発プロキシには プラグインのコレクション が付属しており、 カスタム プラグインを作成 して、ニーズに合わせて開発プロキシ機能を拡張できます。

開発プロキシが起動すると、その構成ファイルで有効になっているプラグインが読み込まれます。 有効にするプラグインに応じて、Dev Proxy はガイダンスを提供したり、API の動作をシミュレートしたり、API 要求を分析したりできます。 以降のセクションでは、さまざまな種類のプラグインのしくみについて説明します。

プラグインのインターセプト

開発プロキシは、 urlsToWatch 配列内のいずれかの URL に一致する要求をインターセプトすると、構成ファイルに記載されている順序で各インターセプト プラグインを呼び出します。 各インターセプト プラグインは、 BaseProxyPlugin クラスから継承され、次のイベントをサブスクライブできます。

  • BeforeRequest - Dev Proxy が要求をインターセプトしたときに発生します
  • BeforeResponse - 開発プロキシがサーバーから応答を受信した後に発生します
  • AfterResponse - Dev Proxy がクライアントに応答を送信した後に発生します

これらのイベントごとに、プラグインはイベント ハンドラーを定義できます。 ハンドラーでは、プラグインは要求と応答を分析し、必要に応じて変更できます。 ガイダンス メッセージを出力することもできます。 何が可能かを確認するには、 開発プロキシで提供されるプラグインのコードを参照してください。

STDIO プラグイン

stdio コマンドを使用すると、開発プロキシは STDIN/STDOUT/STDERR 通信をローカル実行可能ファイルとプロキシします。 STDIO のプロキシは、モデル コンテキスト プロトコル (MCP) サーバーやその他の STDIO ベースのアプリケーションのテストとデバッグに役立ちます。

STDIO プラグインは、 IStdioPlugin インターフェイスを実装し、次のイベントをサブスクライブできます。

  • BeforeStdinAsync - STDIN を子プロセスに転送する前に発生します
  • AfterStdoutAsync - 子プロセスから STDOUT を受信した後に発生します
  • AfterStderrAsync - 子プロセスから STDERR を受信した後に発生します
  • AfterStdioRequestLogAsync - STDIO 要求と応答のペアをログに記録して記録するために発生します
  • AfterStdioRecordingStopAsync - セッションが終了して記録を処理するときに発生します

プラグインは、 ResponseState.HasBeenSet = trueを設定することで、メッセージを変更、使用、またはモックできます。 次のプラグインは、STDIO インターセプトをサポートしています。

レポート プラグイン

開発プロキシを使用すると、API の要求と応答を記録できます。 通常、記録を使用して API の使用状況を報告したり、複数の API 要求を分析したりします。 レポート プラグインは、 BaseReportingPlugin クラスから継承し、イベント ハンドラーを AfterRecordingStop イベントに登録します。

記録を停止すると、Dev Proxy によって AfterRecordingStop イベントが発生し、記録された要求と応答の一覧が登録されたイベント ハンドラーに引数として渡されます。 その後、レポート プラグインは、記録されたデータを分析し、レポート オブジェクトを生成できます。 レポート オブジェクトは、レポート プラグインによって定義される任意のオブジェクトです。 レポート プラグインは、 StoreReport メソッドを呼び出してレポートを格納します。

Important

レポート プラグインはレポート オブジェクトを生成します。このオブジェクトは、Dev Proxy によってメモリに格納されます。 これらのレポート オブジェクトをユーザーが読み取り可能なレポートに変換するには、開発プロキシ構成ファイルで 1 つ以上のレポーターを有効にする必要があります。

記者

開発プロキシでは、 レポーターを 使用して、レポート プラグインによって生成されたレポート オブジェクトをユーザーが読み取り可能なレポートに変換します。 たとえば、 MarkdownReporter はレポート オブジェクトを Markdown ファイルに変換します。 レポーターは、 BaseReporter クラスから継承する特別なプラグインです。 GetReport メソッドを実装します。このメソッドは、レポート プラグインによって作成されたレポートを引数として受け取り、文字列に変換します。 その後、この文字列は、 PluginName_ReporterName.ReporterExtension パターン (例: ApiCenterOnboardingPlugin_MarkdownReporter.md) に従ってディスクに保存されます。

Important

レポーターは、レポート プラグインによって生成されるレポート オブジェクトに依存するため、プラグインを報告した後、開発プロキシ構成ファイルでレポート プラグインを有効にする必要があります。 プラグインを報告する前に有効にした場合、レポーターは報告するデータを持ちません。