Arquitetura de plug-ins

Um plug-in é uma classe .NET registrada com Dev Proxy que introduz um comportamento específico de Dev Proxy. Um plug-in pode oferecer orientação em tempo real sobre o uso da API, simular o comportamento da API, analisar várias solicitações de API ou produzir um relatório. O Dev Proxy tem quatro tipos de plugins:

  • intercetação de plugins que interceptam pedidos e respostas HTTP e podem analisá-los e modificá-los
  • Plugins STDIO que intercetam comunicação stdin/stdout/stderr com executáveis locais
  • plugins de relatórios que são executados em solicitações gravadas pelo Dev Proxy
  • repórteres que geram relatórios com base nos dados coletados por plugins de relatórios

Você registra plugins no arquivo devproxyrc.json. O arquivo contém uma lista de plugins para carregar e sua configuração.

O Dev Proxy vem com uma coleção de plug-ins e você pode criar plugins personalizados estender a funcionalidade do Dev Proxy para atender às suas necessidades.

Quando o Dev Proxy é iniciado, ele carrega plug-ins habilitados em seu arquivo de configuração. Dependendo de quais plug-ins você habilitar, o Dev Proxy pode fornecer orientação, simular o comportamento da API ou analisar solicitações de API. As seções a seguir explicam como os diferentes tipos de plugins funcionam.

Intercetação de plugins

Quando o Dev Proxy interceta uma solicitação correspondente a uma das URLs na matriz urlsToWatch, ele invoca cada plug-in de intercetação na ordem em que estão listados no arquivo de configuração. Cada plugin de interceção herda da BasePlugin classe e pode sobrepor os seguintes métodos:

  • BeforeRequestAsync - chamada quando o Proxy de Desenvolvimento interceta um pedido
  • BeforeResponseAsync - chamada após o Proxy de Desenvolvimento receber uma resposta do servidor
  • AfterResponseAsync - chamada após o Proxy de Desenvolvimento enviar a resposta ao cliente

Em cada override de método, o plugin pode analisar o pedido e a resposta, e modificá-los se necessário. Ele também pode emitir mensagens de orientação. Para ver o que é possível, consulte o código de dos plugins fornecidos com o Dev Proxy.

Plugins STDIO

Quando usas o stdio comando, o Dev Proxy proxia a comunicação STDIN/STDOUT/STDERR com executáveis locais. O proxy STDIO é útil para testar e depurar servidores do Model Context Protocol (MCP) e outras aplicações baseadas em STDIO.

Os plugins STDIO implementam a IStdioPlugin interface e podem subscrever os seguintes eventos:

  • BeforeStdinAsync - levantado antes de encaminhar o STDIN para o processo filho
  • AfterStdoutAsync - criado após receber STDOUT do processo de criança
  • AfterStderrAsync - criado após receber o STDERR do processo de criança
  • AfterStdioRequestLogAsync - levantados para registar e registar pares pedido/resposta STDIO
  • AfterStdioRecordingStopAsync - levantado quando a sessão termina para processar gravações

Os plugins podem modificar, consumir ou simular mensagens ao definir ResponseState.HasBeenSet = true. Os seguintes plugins suportam a interceção STDIO:

Plugins de relatórios

O Dev Proxy permite que você registre solicitações e respostas de API. Normalmente, você usa a gravação para relatar o uso da API ou analisar várias solicitações de API. Os plugins de reporte herdam da BaseReportingPlugin classe e sobrepõem o AfterRecordingStopAsync método.

Quando paras de gravar, o Dev Proxy chama o AfterRecordingStopAsync método de cada plugin, passando a lista de pedidos e respostas gravados como argumento. Os plug-ins de relatórios podem analisar os dados gravados e gerar um objeto de relatório. Um objeto de relatório é um objeto arbitrário definido pelo plug-in de relatórios. Os plug-ins de relatórios armazenam os relatórios chamando o método StoreReport.

Importante

Os plug-ins de relatórios geram objetos de relatório, que o Dev Proxy armazena na memória. Para converter esses objetos de relatório em relatórios legíveis pelo usuário, você deve habilitar um ou mais repórteres no arquivo de configuração do Proxy de Desenvolvimento.

Repórteres

O Dev Proxy usa de repórteres para converter objetos de relatório gerados por plug-ins de relatórios em relatórios legíveis pelo usuário. Por exemplo, o MarkdownReporter converte um objeto de relatório em um arquivo Markdown. Os repórteres são plugins especiais que herdam da classe BaseReporter. Eles implementam o método GetReport, que toma como argumento um relatório criado por um plug-in de relatório e o converte em uma cadeia de caracteres. Essa cadeia de caracteres é salva no disco seguindo o padrão PluginName_ReporterName.ReporterExtension, por exemplo: ApiCenterOnboardingPlugin_MarkdownReporter.md.

Importante

Como os repórteres dependem dos objetos de relatório gerados pelos plugins de relatórios, deve ativar os repórteres no ficheiro de configuração do Proxy de Desenvolvimento após os plugins de relatórios. Se você ativá-los antes de relatar plugins, os repórteres não terão dados para relatar.