Requisições com HTTP Client
Em algumas aplicações, é necessário integrar com serviços externos para buscar ou enviar dados. Isso ocorre através de requisições HTTP para as APIs desses serviços. Conseguimos realizar essas requisições através do Data² Connect HTTP Client.
O objetivo desse guia é mostrar algumas funcionalidades básicas do Data² Connect HTTP Client e como utilizá-lo em suas aplicações.
Utilizaremos a PokeAPI para fazer requisições GET e pegar uma lista de Pokémons ou informações sobre um Pokémon específico, e a CleanURI para encurtar URLs via requisições POST.
O resultado final está diponível no fim desse guia, pronto para copiar e colar no seu Builder.
Criando um HTTP Client
Para criar um HTTP Client, basta dar dois cliques no fundo do Builder, selecionar Connect e depois clicar em HTTP Client.
Sua primeira requisição
Para criar uma nova requisição, clique no botão + no canto inferior esquerdo. Ao fazer isso, uma nova requisição será adicionada à lista de requisições. Iremos utilizar a PokeAPI como exemplo.
Para isso, selecione GET no seletor ao lado de New HttpRequest, e altere o nome da sua requisição para List Pokemons. No campo URL, coloque no endpoint https://pokeapi.co/api/v2/pokemon/ (documentação do endpoint /api/v2/pokemon) para retornar uma lista de pokémons.
Ao clicar no botão de SEND, é possível testar a requisição e ver a resposta no painel ao lado. É possível explorar a resposta em 3 formatos: Text, HTML e JSON.
Utilizando parâmetros
De acordo com a documentação da PokeAPI, é possível pegar informações detalhadas de um Pokémon a partir de seu número de identificação.
Poderíamos colocar o número diretamente na URL, mas é mais interessante que isso seja um parâmetro configurável da URL, dessa forma podemos reutilizar a mesma requisição para buscar informações de diferentes pokémons.
Para isso, iremos adicionar um parâmetro à nossa requisição. Para esse passo, é necessário estar com o Inspector aberto.
- Crie uma nova requisição de tipo
GETcom o nomeGet Pokemon. - Clique no botão
Parameters. - Clique no botão
+para adicionar um novo parâmetro. - Coloque
pokemonNumberemKey. - Clique em
MOCKpara navegar para a definição do parâmetro noInspector. - Em
Component, selecionedata2-core-primitives@Number. - Em
Mock, coloque1para simular o valor do parâmetro.
Agora iremos utilizar esse parâmetro na URL. Para isso:
- No
Inspector, clique em< Inspectorpara navegar para a raiz definição da requisição. - Em
URL, clique nof()e selecioneStringConcat. - Clique no
+para adicionar um novo item, e coloquehttps://pokeapi.co/api/v2/pokemon/. - Adicione outro item, clique em
f(), selecioneContext Reference. - Clique para navegar para a definição do
Context Reference. - Escreva
pokemonNumberemReference. - Clique em
SavenoInspector.
Teste sua requisição clicando em Send no seu HTTP Client. Se tudo estiver corretor, você verá as informações do Pokémon com o número 1 (Bulbasaur).
Utilizando o HTTP Client em uma aplicação
Para utilizar o HTTP Client em um Artboard, iremos criar:
- Um botão que faz a requisição da lista de Pokémons e salva o resultado no seu UI State.
- Um
JSONViewerpara visualizar o resultado da requisição. - Um campo de texto que permite ao usuário escolher o número do Pokémon que deseja buscar.
- Um botão que faz a requisição do Pokémon escolhido e salva o resultado no seu UI State.
- Outro
JSONViewerpara visualizar o resultado das requisições.
Criando a interface
Listar Pokémons
Primeiramente, crie um Artboard. Em seguida, desenhe um Block para ser o botão e outro Block que será o JSONViewer.
No block que será o botão, criaremos a definição de estado (response) e a ação de enviar a requisição, pegar o resultado e salvar no estado:
- Em
Text, escrevaList Pokémons. - Crie um estado novo no
State Definitionschamadoresponse. - Nesse
State Definition, selecionedata2-core-primitives@ObjectemComponente noInitial Value, clique nof()e selecioneObject. - No
On Click, clique nof()e selecioneSeries. - Na primeira ação do
Series, emModuleselecione oHTTP Clientque foi criado. - Em
Interaction, selecionesendRequest. - Clique em
Requestpara habilitar o campo, e selecione a requisiçãoList Pokémons(ou outro nome que foi dado). - Adicione uma segunda ação.
- Clique em
f()e selecione o botãouido lado desetter. Isso irá adicionar umSettercomModulepré-preenchido paraUIState. - Clique no
Setter, em seguida clique emPick Component. Clique no próprioBlockdo botão, e emState Prop, selecioneresponse. - Em
Value, clique emf()e selecioneContext Referencepara transformá-lo em umdata2-core-types@Reference. - Em
Reference, escrevaprevResult. - Estilize o botão como desejar.
- Salve o
Blockclicando emSaveou desselecionando oBlock.
No block que será o JSONViewer iremos visualizar o resultado da requisição, lendo do UI State do botão:
- Mude o tipo dele para
data2-blocks@JSONViewer. - Nos parâmetros do
JSONViewerno fim doInspector, mude o tipo deJSONparaGetterclicando no botãof()e selecionando ouiao lado dogetter(nesse passo, você também poderia clicar noGetterpara navegar, e emModuleselecionarUIState) - Em
Prop, clique emPick Component, passe o mouse em cima doBlockdo botão, e selecioneresponse. - Salve o
JSONViewerclicando emSaveou desselecionando. - Clique no botão de preview do
Artboardpara testar o botão.
Informações de um Pokémon
No mesmo Artboard, desenhe um Block para ser o campo de text, um Block para ser o botão e outro Block que será o JSONViewer.
No Block que será o botão ficarão as definições de estado (response e pokemonNumber), a ação de enviar a requisição e salvar o resultado no UIState:
- Em
Text, escrevaGet Pokémon. - Crie um estado novo no
State DefinitionschamadopokemonNumber, selecionedata2-core-primitives@NumberemComponent, e noInitial Valuecoloque 1. - Crie outro estado no
State Definitionschamadoresponse, selecionedata2-core-primitives@ObjectemComponent, e noInitial Value, clique nof()e selecioneObject. - No
On Click, clique nof()e selecioneSeries. - Na primeira ação do
Series, emModuleselecione oHTTP Clientque foi criado. - Em
Interaction, selecionesendRequest. - Clique em
Requestpara habilitar o campo, e selecione a requisiçãoGet Pokémon(ou outro nome que foi dado). - Clique em
Request Parameters, e empokemonNumber, clique nof()e selecioneuiao lado degetter. Clique para navegar. noGetterpara navegar. - Em
Prop, clique emPick Componente selecione oBlockdo botão. EmState Prop, selecionepokemonNumber. - Adicione uma segunda ação.
- Clique em
f()e selecione o botãouido lado desetter. Isso irá adicionar umSettercomModulepré-preenchido paraUIState. - Clique no
Setter, em seguida clique emPick Component. Clique noBlockdo botão, e emState Prop, selecioneresponse. - Em
Value, clique emf()e selecioneContext Reference. - Em
Reference, escrevaprevResult. - Estilize o botão, e salve.
No Block que será o JSONViewer, iremos visualizar o resultado da requisição, lendo do UIState do botão:
- Mude o tipo dele para
data2-blocks@JSONViewer. - Clique em
JSON, e noModuleselecioneUIState. - Em
Prop, clique emPick Component, passe o mouse em cima doBlockdo botão, e selecioneresponse. - Salve.
No Block que será o campo de texto, iremos editar o UI State pokemonNumber que está no botão, para que o usuário possa digitar o número do Pokémon que deseja buscar:
- Mude o tipo para
data2-blocks@DataFieldBlock. - Em
Dataset, selecioneUIState. - Em
Field, clique emPick Component, passe o mouse em cima doBlockdo botão, e selecionepokemonNumber. - Em
Type, selecionenumber. - Salve.
- Clique no botão de preview do
Artboardpara testar o botão.
Exemplo: Requisição POST para encurtar URLs
Iremos criar uma requisição POST para a url https://cleanuri.com/api/v1/shorten que é uma API que encurta URLs (cleanuri docs). Ela espera um JSON com a chave url e o valor da URL que queremos encurtar. Exemplo:
{
"url": "https://google.com/"
}
- Clique em
+para adicionar uma nova requisição. - Selecione
POSTcomo método e altere o nome da requisição paraShorten URL. - No campo URL, coloque
https://cleanuri.com/api/v1/shorten. - Em
Parameters, adicione um parâmetro chamadourl, clique emMockpara oInspectornavegar para a definição do parâmetro. - Em
Component, selecionedata2-core-primitives@String. - Em
Mock, coloquehttps://google.com/para simular o valor do parâmetro. - Navegue para a raiz do
Inspectore clique emData. - No cabeçalho, ao lado de
Object, clique em+para adicionar uma chave ao objeto. - Coloque
urlcomo chave e emtype, selecionedata2-core-types / Referencepara criar a chave com o tipo correto. - Clique no parâmetro adicionado, e em
Referencecoloqueurl. - Salve.
- Clique em
Sendpara testar a requisição.
Conclusão
Neste artigo, aprendemos como criar um HTTP Client e realizar requisições HTTP. Vimos como adicionar parâmetros às requisições, e como utilizar o HTTP Client em uma aplicação.
Como desafio, você pode tentar fazer realizar uma requisição POST para o encurtador de URL, onde o usuário pode digitar a URL que deseja encurtar.
Resultado final
O resultado final está disponível a seguir (e pode ser copiado e colado no seu Builder).