Depurando a Web
Neste artigo, vou abordar o teste e a depuração dos aplicativos da Web Caché (principalmente REST) com ferramentas externas. A segunda parte abrange ferramentas de Caché.
Você escreveu um código do servidor e quer testar em um cliente ou já tem um aplicativo da Web e ele não funciona. É aqui que entra a depuração. Neste artigo, vou mostrar desde as ferramentas mais fáceis de usar (navegador) até as mais completas (analisador de pacotes). Porém, primeiro, vamos falar um pouco sobre os erros mais comuns e como eles podem ser resolvidos.
Erros
401 Não Autorizado
Acho que é o erro encontrado com mais frequência ao implantar para a produção. O servidor de desenvolvimento local geralmente tem uma configuração de segurança mínima ou normal, mas convencional. No entanto, o servidor de produção pode ter um esquema mais restritivo. Portanto:
- Confira se você fez login
- Confira se o usuário tem acesso ao banco de dados/tabela/procedimento/linha/coluna que você quer acessar
- Confira se a solicitação OPTIONS pode ser realizada por um usuário não autorizado
404 Não Encontrado
Confira:
- Se o url está correto
- Caso seja um aplicativo novo e você esteja usando um servidor da Web externo, recarregar o servidor da Web pode ajudar
Erros do aplicativo
De certa forma, é o mais fácil de encontrar — o stack trace ajuda. A resolução é completamente específica ao aplicativo.
Ferramentas de depuração
Navegador da Web
A principal ferramenta de depuração sempre disponível é o navegador da Web, de preferência o Chrome, mas o Firefox também é suficiente. As solicitações GET podem ser testadas ao inserir o URL na barra de endereço, todas as outras solicitações exigem um aplicativo da Web ou a escrita de código js. A abordagem geral é:
- Pressione F12 para abrir as ferramentas de desenvolvedor.
- Acesse a guia Network (Rede).
- Marque a caixa de seleção "Preserve Log" (Preservar registro), se não estiver selecionada.
- Exiba apenas solicitações XHR.
- Realize a ação com problemas no aplicativo da Web.

Depois, você pode examinar as solicitações e reenviá-las. O Firefox também pode editar as solicitações antes de repeti-las.
Vantagens:
- Sempre disponível
- Fácil de usar (os usuários finais podem enviar capturas de tela das guias Network e Console)
- É um ambiente de usuário final
Desvantagens:
- Não mostra respostas parcialmente enviadas/corrompidas/etc.
- Lento para respostas grandes
- Lento para um número grande de respostas
- Tudo é feito manualmente
Cliente REST
O cliente REST é um aplicativo da Web independente ou um complemento do navegador da Web criado especificamente para testar aplicativos da Web. Eu uso Postman, mas há muitos outros. Veja como é a depuração no Postman:

O Postman trabalha com solicitações agrupadas em coleções. A solicitação pode ser enviada no ambiente. O ambiente é uma coleção de variáveis. Por exemplo, no meu ambiente CACHE@localhost, a variável do host está definida como localhost e o usuário como _SYSTEM. Quando a solicitação é enviada, as variáveis são substituídas pelos seus valores para o ambiente escolhido e a solicitação é enviada.
Confira um exemplo de coleção e ambiente para o projeto MDX2JSON.
Vantagens:
- Escreva uma única vez e use em todos os lugares
- Melhor controle sobre a solicitação
- Embelezamento das respostas
Desvantagens:
- <s>A depuração de solicitações em cadeia (a resposta à request1 pode forçar a request2 ou request 2B) ainda é manual</s> (Atualização de 22 de fevereiro: possível no Postman)
- Às vezes, falha com respostas parcialmente enviadas/corrompidas/etc.
Proxy de depuração HTTP
Um aplicativo independente que registra tráfego HTTP(S). As solicitações registradas podem ser modificadas e reenviadas. Eu uso Charles e Fiddler.

Vantagens:
- Processa respostas parcialmente enviadas/corrompidas/etc.
- Embelezamento das respostas
- Melhor suporte para tráfego HTTPS (do que no analisador de pacotes)
- Consegue capturar sessões
Desvantagens:
- Algo (aplicativo da Web/cliente REST/código JS) é necessário para enviar a solicitação
Analisador de pacotes
Um programa de computador consegue interceptar e registrar o tráfego transmitido por uma rede. Com os fluxos de dados fluindo em toda a rede, o sniffer captura cada pacote e, se necessário, decodifica os dados brutos do pacote. Essa é a opção mais completa, mas também exige um pouco de habilidade para a operação adequada. Eu uso o WireShark. Veja um breve guia sobre a instalação e o uso:
- Se você quiser capturar pacotes locais, leia sobre o loopback e instale o software de pré-requisito (npcap para windows)
- Instale o WireShark
- Configure filtros de captura (por exemplo, um filtro para só capturar tráfego na porta 57772: port 57772
- Inicie a captura
- Configure filtros de exibição (por exemplo, um filtro para só exibir tráfego http para um ip específico: ip.addr == 1.2.3.4 && http
Confira um exemplo de captura de tráfego http (filtro de exibição) na porta 57772 (filtro de captura):
Vantagens:
- Processa respostas parcialmente enviadas/corrompidas/etc.
- Consegue capturar uma grande quantidade de tráfego
- Consegue capturar qualquer coisa
- Consegue capturar sessões
Desvantagens:
- Algo (aplicativo da Web/cliente REST/código JS) é necessário para enviar a solicitação
O que usar
Bem, isso depende da finalidade. Primeiro, podemos ter como objetivo registrar (proxy de depuração, analisador de pacotes) ou gerar (navegador, cliente REST) solicitações.
Se você estiver desenvolvendo uma API Web REST, o cliente REST é a maneira mais rápida de testar o funcionamento.
No entanto, se as solicitações do cliente REST funcionarem, mas o aplicativo da Web cliente não, talvez seja necessário o proxy de depuração http e o analisador de pacotes.
Se você tiver clientes e precisar desenvolver uma API do lado do servidor para trabalhar com eles, precisará do proxy de depuração http ou do analisador de pacotes.
É melhor estar familiarizado com todos os 4 tipos de ferramentas e mudar rapidamente entre eles se o atual não der conta do trabalho.
Às vezes, a ferramenta ideal é óbvia.
Por exemplo, recentemente, desenvolvi uma API do lado do servidor para um protocolo de extensão http popular. Os requisitos eram:
- Os clientes já estavam escritos e o código não podia ser alterado
- Clientes diferentes têm comportamentos diferentes
- O comportamento no http e https varia
- O comportamento com diferentes tipos de autenticação varia
- Até cem solicitações por segundo para cada cliente
- Todos ignoram o RFC
Há só uma solução aqui: o analisador de pacotes.
Ou, se estou desenvolvendo uma API REST para consumo de JS, o cliente REST é uma ferramenta perfeita para testes.
Ao depurar o aplicativo da Web, comece com o navegador.
Na Parte 2, vamos discutir o que pode ser feito (muita coisa) para a depuração da Web no lado do Caché.
Quais são suas abordagens para depurar a comunicação no lado do cliente?