Insomnia

Alterado em: 15/03/2023

Insomnia é uma ferramenta Open Source para desenvolvimento / teste de API Clients.
Utilizado para envio de requisições REST, SOAP, GraphQ e GRPC.

Realize o download do Insomnia no site https://insomnia.rest/download:

Site oficial Insomnia, posicionado em download

Clique duas vezes sobre o aplicativo baixado:

Pasta onde está o aplicativo baixado

Deverá apresentar aplicação aberta conforme abaixo:

Insomnia aberto

Clique no menu Application na opção Preferences:

Clicando no menu application no item preferences

Clique na aba Plugins:

Clicando na aba Plugins

Preencha o campo “npm-package-name” com o nome do plugin desejado e clique no botão Install Plugin:

Posicionado no campo npm package name

Plugin do exemplo insomnia-plugin-theme-dracula:

Campo preenchido e disponivel para clicar no botão Install Plugin

Após clicar no botão Install Plugin deverá apresentar a instalação com sucesso conforme abaixo:

Plugin Instalado

Clique no menu Application na opção Preferences:

Clicando no menu application no item preferences

Clique na aba Themes:

Clicando na aba Themes

Selecione o theme desejado clicando sobre ele e após feche tela de preferências:

Theme selecionado

Observação: Theme aplicado com sucesso conforme o exemplo acima.

Clique no botão Personal Projects:

Clicando no botão Personal Projects

Clique em criar um novo projeto conforme item 1, após insira o nome desejado para o projeto e clique no botão "Create":

Criando o projeto inserido nome e clicando no botão Create

Clique na opção “New Collection”, insira o nome e clique no botão“Create”:

Criando a collection inserindo nome e clicando no botão Create

Será direcionado para collection criada conforme abaixo:

Direcionado para collection criada

Para retornar ao projeto para selecionar e/ou criar outras collections, clique sobre o nome do projeto conforme item 1 ou clique sobre a opção “Personal Projects” conforme item 2:

Retornando para página de projetos para selecionar e/ou criar novas collections

Selecione o projeto e a collection que deseja configurar a primeira Api rest. Exemplo abaixo:

Selecionado o projeto e a collection

Clique na opção “New Folder” para criação e melhor organização para iniciar configuração de uma Api rest (esse passo não é obrigatório, apenas é uma boa pratica de organização):

Selecionado a opção para criar pasta para inserir apis

Insira o nome desejado e clique no botão “Create”:

Inserido nome da pasta para inserir apis

Seleciona na pasta criada a opção “New HTTP Request”:

Selecionado na pasta criada abertura do menu

Selecioando a opção New Http Request

Clique com o botão direto do mouse sobre a api criada e selecione a opção “Rename” para inserir o nome amigável para a nova api:

Inserindo o nome amigavel para api

Inseria o nome amigável ou extado da api e clique no botão “Rename”:

Api renomeada

Observação: Para esse manual do Insomnia será utilizado as apis de filmes disponibilizadas pelo site https://developers.themoviedb.org/3/movies/get-movie-details

Insira o endpoint e método do serviço:

Inserindo o metodo e endpoint do serviço

Os métodos de uma API REST são baseados no protocolo HTTP e são utilizados para especificar o tipo de operação que está sendo realizada na solicitação. Os principais métodos da API REST são:

GET: usado para recuperar dados de um recurso existente.
POST: usado para criar um novo recurso.
PUT: usado para atualizar completamente um recurso existente.
PATCH: usado para atualizar parcialmente um recurso existente.
DELETE: usado para excluir um recurso existente.
OPTIONS: O método OPTIONS é usado para obter informações sobre as opções disponíveis para um recurso específico, como quais métodos HTTP são permitidos para o recurso ou quais cabeçalhos devem ser incluídos na solicitação.
HEAD: O método HEAD é semelhante ao método GET, mas retorna apenas os cabeçalhos de resposta, sem o corpo da resposta.

O endpoint (URL) pode ser preenchido digitando ou com Ctrl – C e Ctrl – V, exemplo preenchido:

Endpoint/Url preenchida

Observação 1: O endpoint(URL) que será utilizado para teste será o https://api.themoviedb.org/3/movie/{movie_id}?api_key=<"api_key"> &language=en-US, que formado por um Path Params que é o {movie_id} e duas Query String “api_key” e ”language”.

Observação 2: O Path Parameters são variáveis que fazem parte da URL do endpoint da API. Eles permitem que os desenvolvedores definam um valor variável em uma URL, que pode ser usado para especificar um recurso específico que o serviço deseja acessar.

Observação 3: A Query String é uma parte da URL que contém parâmetros adicionais que podem ser usados para filtrar, classificar ou paginar os resultados da solicitação. A Query String começa após o caractere de interrogação "?" na URL e consiste em um ou mais pares de chave/valor separados por "&".


Alterando o endpoint(URL) para inserir o id do filme e a chamada para execução da api:

EndPoint Configurado

De:
https://api.themoviedb.org/3/movie/{movie_id}?api_key=api_key&language=en-US

Para:
https://api.themoviedb.org/3/movie/561?api_key=02a91c06bc8383d5587a1b3529e82930&language=en-US

Observação 1: O id do Filme pode ser capturado do site https://www.themoviedb.org/, onde ao clicar em algum filme será apresentando na url o id, conforme exemplo https://www.themoviedb.org/movie/561-constantine, id é o 561.

Observação 2: A chave que vamos utilizar nas apis do movies será 02a91c06bc8383d5587a1b3529e82930, caso desejar possuir sua chave exclusiva se cadastre no site e na área logada em configurações acesse o menu “Api” para criar sua chave.

Clique no botão “Send” para realizar execução do serviço:

Requisição enviada

Após realizar execução do serviço deverá retornar o status da chamada e o response da consulta e/ou criação se houver do recurso executado:

Retorno do serviço com status e response

Os códigos de status de retorno mais comuns são:

200 OK: Indica que a solicitação foi bem-sucedida e que o servidor retornou com sucesso os dados solicitados pelo cliente.
201 Created: Indica que a solicitação de criação de um novo recurso foi bem-sucedida e que o recurso foi criado com êxito.
204 No Content: Indica que a solicitação foi bem-sucedida, mas o servidor não tem conteúdo para retornar.
400 Bad Request: Indica que a solicitação enviada pelo cliente não pôde ser processada pelo servidor, pois contém dados inválidos ou incompletos.
401 Unauthorized: Indica que a solicitação não foi autorizada, geralmente devido a autenticação ou autorização falha.
404 Not Found: Indica que o recurso solicitado pelo cliente não foi encontrado no servidor.
500 Internal Server Error: Indica que ocorreu um erro interno no servidor ao processar a solicitação.

O ambiente (environment) no Insomnia é uma maneira de gerenciar diferentes conjuntos de variáveis que podem ser usados em suas solicitações API. Essas variáveis podem ser usadas em suas solicitações API para diferentes fins, como autenticação, autorização, configurações de conexão, configuração path da url, configuração de Query String etc.

Clique na opção No Environment e após em Manage Environments:

Tela exibindo a opção No Enviroment

Clique na opção Sub Environments e após em Environment:

Tela exibindo o menu Sub Environments

Realize um duplo click para inserir o nome desejado para o ambiente:

Renomeando o ambiente

Clique na opção Color e após em Assign Color:

Apresentando menu Assgin Color

Insira a cor desejada:

Selecionando a cor desejada

As variáveis são criadas como estrutura JSON, abaixo estamos criando a estrutura de objeto com nome themoviedb, que é referencia da onde está exposta api, pode ser inserido qualquer nome que melhor relacione com seu projeto, após está sendo criado a variável url e api-key para receber os valores fixos para esse ambiente:

Configurado o json do ambiente com as variaveis

Clique no botão “Close” para concluir a configuração.

Clique na opção No Environment e após em Use {Seu Ambiente}:

Apresentado menu para seleção do ambiente

Ambiente selecionado

Ambiente selecionado deverá ser apresentado conforme acima.

Configurando a api Get Details utilizando as variáveis definidas no ambiente:

1- Delete a url https://api.themoviedb.org/3:

Demonstrando a url a ser deletada

Url deletada

Mantenha curso do mouse antes do / e clique em CTRL + SPACE, será apresentada a variável de ambiente da url que foi criado, selecione a variável:

Variavel de ambiente demonstrada

Deverá ser apresentado a variável conforme abaixo:

Variavel Inserida da url

2- Delete o dado da Query String api_key:

Demonstrado a query string api-key a ser deletada

Query String api-key deletado

Mantenha curso do mouse após o = e clique em CTRL + SPACE, será apresentada a variável de ambiente da api-key que foi criado, selecione a variável:

Demonstrando a variavel api-key criada no ambiente para inserção

Deverá ser apresentado a variável conforme abaixo:

Inserido a variavel de ambiente api-key

Clique no botão “Send” será efetuado a chamada do serviço com a configuração das variáveis conforme abaixo:

Teste de serviço realizado com sucesso com as variaveis configuradas na url

Acessar a collection que deseja exporta e clique na opção Import/Export:

Opção para import e export de collection

Clicar na opção Export Data, apresentara as possibilidades de exportação conforme abaixo:

Apresenta duas opções de exportação, todas collection do projeto ou collection especifica

Nota: Primeira opção apresenta acima é para exportar apenas a collection posicionada do projeto e a segunda opção para exportar todas as collectionsdo projeto. No material irei seguir exportando apenas a collection selecionada.

Será apresentado a opção para exportar todos as apis ou apenas as desejadas, após sua decisão clique no botão Export:

Tela de export apresentando opção de exporta todas apis ou desejadas e disponibilizado o botão export

Selecione a opção deseja para export, onde possui três opção disponíveis (Insomnia v4 (JSON),Insomnia v4 (YAML) e HAR – HTTP Archive Format, após escolha clique no botão Done:)

Selecione a pasta desejada para salvar o arquivo, redefina o nome do arquivo para um amigável e clique no botão Export:

Seleção e rename do arquivo para salvar o export

Collection exportada com sucesso conforme abaixo:

Demonstrado o arquivo exportado na pasta selecionada no passo anterior

Posicione no projeto desejado para importar uma collection e clique na opção Import From > File:

Selecionado o projeto e clicando na opção de import file

Selecione a pasta que está o arquivo da collection e clique no botão Import:

Selecionando pasta que contem o arquivo com collection e clicando em import

Selecione a opção Request Collection:

Apresentado as opções Request Collection e Design Document

Import deverá ser realizado e apresentara a mensagem de sucesso abaixo:

Mensagem apresentando sucesso no import

Collection importada só clicar sobre ela que será apresentado as apis para uso já configuradas:

Clicando na collection importada

Apresentado as collections configuradas

Para seguir com o processo de configurar o acionamento de uma chamada em outra api configure as apis abaixo:

Documentação das apis caso necessário: https://developers.themoviedb.org/3/getting-started/introduction

1- Serviço Create Request Token com método GET:

https://api.themoviedb.org/3/authentication/token/new?api_key=02a91c06bc8383d5587a1b3529e82930


2- Serviço Create Session com método POST:

https://api.themoviedb.org/3/authentication/session/new?api_key=02a91c06bc8383d5587a1b3529e82930

Body:
{ "request_token": "6bc047b88f669d1fb86574f06381005d93d3517a" }


3- Serviço Rate Movie com método POST:

https://api.themoviedb.org/3/movie/561/rating?api_key=02a91c06bc8383d5587a1b3529e82930&session_id=1

Body:
{ "value": 8.5 }


Execute o serviço para gerar o token:

Serviço para geração do token

Copiei o token (campo request_token) gerado sem as aspas na url https://www.themoviedb.org/authenticate/f05c4eba910cdae41e3019d35c9a5186e653b8e7 e execute no navegador para autorizar o token:

Copiando o link no navegador e apresentando aprovação


Autenticação realizada

Observação: Processo realizado acima para simular autenticação do token de uma forma fácil para ser utilizado nos próximos serviços.

No serviço Create Seesion, insira o token gerado e autorizado na api anterior no body no campo request_token, porém não execute o serviço:

Inserindo o token gerado no body json

Caso tenha duvida como inserir um body em uma api, clique conforme item 1, selecione a opção JSON (No caso nossa api exposta está nesse formato) conforme item 2 e digite ou copie o campo no formato Json conforme item 3:

{ "request_token": "f05c4eba910cdae41e3019d35c9a5186e653b8e7" }

Criando Body Json

Na Query String “session_id” após o =clique em CTRL + SPACE, onde apresentará as opções de configuração:

Clicando em ctrl + space para abrir opções de seleção

Apresentando lista de opção para configuração

Digite “resp” e selecione a opção Response Body Attribute:

Selecionando opção Response Body Attribute

Clique sobre o Response Body Attribute criado:

Clicando sobre o response criado para configuração

Será apresentando a tela de configuração:

Tela para configuração apresentada

Em Request seleciona a api Create Session para que toda vez que executar api Rate Movie seja executado a api Create Session para gerar o session_id automático:

Selecionando o serviço Create Session

Request selecionada

Em Filter (JSONPath or XPath) inserira o operador $. + campo desejado para recuperar no response na execução da api Create Session irá ser utilizado o conteúdo do campo session_id:

Finalizado a configuração do campo session_id do response

Em Trigger Behavior será configurado se será reenviada a execução do serviço Create Session que está sendo utilizando para obter o session_id automático. No tutorial vamos utilizar opção Awalys – resend request When needed, para acionar sempre o serviço para gerar novo session_id:

Demostrando todas opções para configuração

Selecionado a opção Awalys – resend request When needed

Clique no botão Done para finalizar a configuração:

Configuração finalizada ao clicar no botão Done

Na api Rate Movie insira a nota desejada do filme no campo value do body e execute o serviço, será gerado um session_id de forma automática acionado a api Create Session e inserindo na Query String session_id da api Rate Movie:

Serviço executado com sucesso

Nota:Documentação do Insomnia caso queira se aprofundar nas configurações possíveis https://docs.insomnia.rest/insomnia/chaining-requests

Observação: Automatizar a execução de um serviço em outro pode ser realizado em quando parte da api, no caso do tutorial foi aplicado em uma Query String, porém pode ser aplicado em um header, auth, campo desejado do body etc.

Para extrair o cUrl com a configuração deu uma api para ser compartilhada clique na opção Generate Client Code:

Selecionando a opção Generate Client Code

Irá apresentar o cUrl montando para compartilhamento para import no Insomnia:

Exporte apresentado para copia

Observação: Existe a opção de selecionar outras opção de geração de cUrl alterando o Shell para outro desejado como Java, toda documentação do Insomnia pode ser encontrada em https://docs.insomnia.rest/insomnia/get-started

Uma das formas de import do cURL pode ser criando uma nova api Http Request conforme abaixo:

Clicando na pasta para apresentar a opção New Http Request

Nova api criada

Copie na nova api na url o cUrl que deseja importar:

Copiando na url o curl

Será configurado de forma automática a api alterando seu método, criando o body e inserindo o header conforme abaixo:

Configuração automatica da api realizada

Observação: Foi utilizado o cUrl abaixo para a copia na url e configuração:

curl --request POST \ --url 'https://api.themoviedb.org/3/authentication/session/new?api_key=02a91c06bc8383d5587a1b3529e82930' \ --header 'Content-Type: application/json' \ --data '{ "request_token": "f05c4eba910cdae41e3019d35c9a5186e653b8e7" }'

Para casos do response retorna com muitos dados, pode ser filtrado apenas a estrutura/tag desejada utilizando o operador $. + nome conforme exemplo abaixo:

utilizando operador $.

Foi inserido o filtro para o array genres utilizando o operador $.genres e clicando em Enter do teclado:

Filtro no array genres realizado

Nota: Estrutura do Array de gênero do filme:

"genres": [ { "id": 14, "name": "Fantasy" }, { "id": 28, "name": "Action" }, { "id": 27, "name": "Horror" } ]

Para retornar o response completo só apagar o filtro:

Apagado o filtro e retornado o response completo