Simular corpos de REQUISIÇÃO automaticamente para acelerar a depuração de APIs
Tags: webdev, api, ptbr, braziliandevs
Published: 2023-10-13 08:59:47

Ao desenvolver APIs, a depuração é sempre um problema chato.

O Postman pode ajudar a enviar solicitações, mas quando o corpo da API é complicado, a construção de um corpo JSON seria difícil. O Junit também funciona, mas todas as solicitações devem ser construídas por você mesmo nas classes de teste.

Corpos complexos fazem muitos backends abandonarem testes unitários e saírem com uma API não testada para desenvolvedores front-end e engenheiros de QA.

O caso acima demonstra que a qualidade do código declina sem uma boa ferramenta.

E agora, descobri que [uma ferramenta chamada Apidog](https://apidog.com/?utm_source=dev_to&utm_medium=br&utm_content=Mock_request_body) pode gerar o corpo da solicitação automaticamente ao depurar. A ferramenta pode construir um JSON de solicitação correto por si só.

## Como simular

Esta abordagem funciona para equipes API-first. As APIs são projetadas antes do desenvolvimento, então durante a depuração, você tem uma especificação de API.

1. Importe as especificações da API para o Apidog. ([Como?](https://dev.to/jasonchan/como-criar-um-mock-de-api-em-um-minuto-jk8))
2. Abra uma API e verifique se a solicitação tem uma especificação de corpo JSON/XML.

![Imagem](https://res.cloudinary.com/practicaldev/image/fetch/s--Al7iz2xC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c8depoegey0lem5hc185.png)

3. Mude para a guia "Run" e clique no botão "Generate Automatically".

Pronto. Você obteve um JSON simulado de acordo com a especificação da solicitação!

![Imagem](https://res.cloudinary.com/practicaldev/image/fetch/s--wC4e2aNR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9elinaoj7q2qtf3yfxc5.png)

E agora clique em "Send" para enviar a solicitação como fizemos no Postman, mas de forma mais eficiente. A maioria dos recursos no Postman também é suportada no Apidog.

Nossa equipe tem usado o Apidog para depurar APIs em vez do Postman por semanas.

## O que mais há

Observe os dados simulados. Eles foram gerados automaticamente de acordo com o nome do campo. Um campo nomeado "cidade" é simulado com um nome de cidade, um campo chamado photoUrl é simulado com uma URL de foto e todos os dados simulados seguem o schema JSON especificado na API. 

E isso não é o fim.

Passe o mouse sobre a seta ao lado de "Generate Automatically", você verá três itens de menu.

![Imagem](https://res.cloudinary.com/practicaldev/image/fetch/s--c73varHL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gaoiftrapox2sjkb02oh.png)

"Default value first" significa que o JSON simulado seria preenchido pelo valor padrão especificado em cada campo da API primeiro. "Example value first" significa que o JSON simulado seria carregado pelo JSON de solicitação de exemplo primeiro. Mas o que é "Atualizar ao enviar solicitação"?

![Imagem](https://res.cloudinary.com/practicaldev/image/fetch/s--L8tOVqOr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jjlt5ln9op9zeue7oj3t.png)

É apenas o significado literal. Cada vez que a solicitação é enviada, o corpo é gerado novamente.

Interessante, não é?

## Personalize

Até agora, tudo parece ótimo.

Mas e se alguns dos meus campos não forem esperados para mudar? Como posso tornar alguns campos fixos e outros simulados?

Clique no botão "Dynamic Value" e você encontrará um novo mundo.

![Imagem](https://res.cloudinary.com/practicaldev/image/fetch/s--SfZluY5V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c0xe2jlba4tt8c6yl640.png)

Todas as sintaxes Faker.js são suportadas e você pode selecionar qualquer uma delas diretamente. Você pode até selecionar uma função para alterar o valor simulado, como md5, substr ou base64 etc.
Em seguida, será inserido no corpo da solicitação, assim.

![Imagem](https://res.cloudinary.com/practicaldev/image/fetch/s--VA1yIjJF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0y85l19nu6nn5ttcasdz.png)


Você pode decidir qual campo é fixo e qual é simulado pelo Faker.js. Ao enviar, todos os campos faker mudarão para os dados reais abaixo.

![Imagem](https://res.cloudinary.com/practicaldev/image/fetch/s--Yxmz137J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/47yomatmtqnsti0hcnxc.png)

É isso. E muda cada vez que envia.

O Apidog é uma ótima ferramenta que faz nosso time construir APIs mais rapidamente. Eu gosto.

[Baixe o Apidog aqui](https://apidog.com/?utm_source=dev_to&utm_medium=br&utm_content=Mock_request_body).