Guia Prático: Ferramentas para Simulação de Requisições em APIs

Quando estamos construindo uma API precisamos fazer uma simulação das requisições que serão feitas por agentes externos.

Como uma API não tem um HTML diante de nós, como simular essas requisições?

Certamente precisamos de ferramentas para isso e abaixo apresento três ferramentas começando da mais simples até uma com interface avançada.

O objetivo desse post é ajudar quem está aprendendo a construir API’s e antes de começar, um breve resuminho sobre conceito de API.

 

API

API é uma interface padronizada desenvolvida já com o objetivo de fácil integração com outras aplicações. Isso quer dizer basicamente que a API vai ser utilizada por algum fator externo, quer seja uma aplicação frontend, uma app mobile ou qualquer outra aplicação externa.  

Sendo assim, se outra aplicação que vai consumir a sua API você precisa garantir que o retorno seja conforme acordado.

Antes de entrar no mérito dos testes, vamos falar de algumas coisas importantes a serem testadas.

 

Status code

Imagine a situação em que um campo requerido não é enviado, e a API retorna um texto. Como diferenciar se esse texto representa um erro ou um sucesso?

O Status code é o código que representa o status de resposta da requisição (https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html). É importante que sua API retorne o status code correto, de acordo com o que está sendo retornado.

Abaixo alguns dos status code mais utilizados.

200 OK

400 Bad Request

401 Unauthorized

402 Payment Required

403 Forbidden

404 Not Found

405 Method Not Allowed

500 Internal Server Error

 

Formato

Outra coisa que você precisa verificar é se a API está retornando as informações no formato esperado, quer seja texto plano, json, xml ou até mesmo uma imagem. Isso é importante pois por exemplo, se quem consome essa API é uma aplicação em Angular onde é esperado um json, se for retornado um texto plano vai dar erro.

 

Conteúdo

Existe API cujo retorno é possível testar de forma integral, quero dizer, você consegue testar se a resposta é exatamente aquilo que você espera, como por exemplo:

{“message”:”email is required”} ou {“mensagem”:”Dados salvos com sucesso”}.

Mas também existem situações onde uma verificação integral não é viável, em que na verdade você só precisa atestar que determinadas informações constam dentro do corpo de resposta.

 

Curl

O Curl é uma ferramenta para transferir dados via linha de comando. Você manualmente precisará indicar tudo o que vai ser enviado na requisição (dados, cabeçalhos, método).

Abaixo o exemplo de uma requisição POST enviando um json com os campos email e password.

juciellen@cabrera:~/Documentos/projetos/codeception$ curl -X POST -H 'Content-Type: application/json' -i 'http://codeception.local/user' --data '{"email":"jucarol17@gmail.com","password":"123"}' HTTP/1.1 200 OK Date: Sat, 03 Mar 2018 18:43:33 GMT Server: Apache/2.4.18 (Ubuntu) X-Powered-By: PHP/7.1.3 ZendServer/9.1.0 Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/ Content-Length: 37 Content-Type: application/json; charset=utf-8 {"message":"User saved successfully"}]

Repare algumas informações importantes referentes à resposta, o status code 200 indicando que a resposta da requisição ocorreu com sucesso, o content type é um json – assim como a requisição – e o json de resposta contém uma mensagem de sucesso.

https://curl.haxx.se/

https://github.com/curl/curl

 

RESTClient

O RESTClient é um plugin do Firefox. Ele tem uma interface clean e permite salvar requisições rotineiras.

Ter uma interface mais amigável em comparação ao uso via linha de comando sem dúvidas ajuda bastante.

Assim como o Curl, no RESTClient você indica o método HTTP, cabeçalhos e corpo da requisição. Feitas as devidas definições, ao clicar no botão SEND a requisição é feita para  a URL indicada e mais abaixo serão retornados dados da resposta.

https://addons.mozilla.org/pt-PT/firefox/addon/RESTClient/

https://github.com/chao/RESTClient

 

Postman

Das três opções essa é a mais avançada. O Postman é uma ferramenta bem completa que permite salvar requisições, compartilhar coleções de requisições além de possibilitar criação de scripts em Javascript para criar testes para suas API’s. Mas vamos devagar né? O que queremos pra começar é uma interface amigável para montar as requisições HTTP.

Assim como o RESTClient tem uma interface muito bacana, mas o Postman possibilita uma organização melhor.

Você consegue criar uma collection por projeto e dentro de cada collection as requisições correspondentes.

https://www.getpostman.com/

 

Finalizando

Eu usei o RESTClient por bastante tempo, a versão anterior a que eu apresentei aqui. Eu já havia testado o Postman mas me senti mais à vontade com o RESTClient na ocasião e mantive com ele.

Depois por motivos de atualização do Firefox a versão que eu utilizava foi descontinuada então dei uma nova chance ao Postman e desde então tenho usado ele.

Para fins de aprendizado sobre requisições HTTP o Curl é interessante, mas no dia a dia acho prático ter uma opção com interface mais amigável.

Eu sugiro agora que você teste essas ferramentas e veja com qual você se sente mais confortável e produtivo.

Anterior Invista em sua carreira com os cursos de PHP da 4Linux
Próxima Descubra o DevOps: Aumente a produtividade e qualidade na entrega de software

About author

Juciellen Cabrera
Juciellen Cabrera 5 posts

Programadora e Instrutora de PHP em 4Linux | Rankdone. Membro das comunidades PHPSP e PHPWomen. Uma das poucas mulheres com certificação ZCPE no Brasil.

View all posts by this author →

Você pode gostar também

Desenvolvimento

Introdução ao Robot Framework: Ferramenta para Testes Automatizados

Hoje, no blog da 4Linux, vamos falar sobre Robot Framework, uma ferramenta voltada para testes automatizados. O objetivo é fazer uma séries de posts até a criação de uma pipeline

Containers

Docker: Ferramenta essencial para desenvolvedores e gestão de aplicativos

O que é o Docker O Docker é uma ferramenta de código aberto para conteinerização que agiliza a criação e a implantação de aplicativos por meio do uso de contêineres.

Desenvolvimento

Descubra as novidades do PostgreSQL 13: suporte a colações não determinísticas

Com o lançamento recente do PostgreSQL 13 e com a grande maturidade das versões anteriores, algumas das novidades dessas versões mais recentes se tornam cada vez mais disponíveis para uso