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
GET
com o nomeGet Pokemon
. - Clique no botão
Parameters
. - Clique no botão
+
para adicionar um novo parâmetro. - Coloque
pokemonNumber
emKey
. - Clique em
MOCK
para navegar para a definição do parâmetro noInspector
. - Em
Component
, selecionedata2-core-primitives@Number
. - Em
Mock
, coloque1
para simular o valor do parâmetro.
Agora iremos utilizar esse parâmetro na URL. Para isso:
- No
Inspector
, clique em< Inspector
para 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
pokemonNumber
emReference
. - Clique em
Save
noInspector
.
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
JSONViewer
para 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
JSONViewer
para 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 Definitions
chamadoresponse
. - Nesse
State Definition
, selecionedata2-core-primitives@Object
emComponent
e noInitial Value
, clique nof()
e selecioneObject
. - No
On Click
, clique nof()
e selecioneSeries
. - Na primeira ação do
Series
, emModule
selecione oHTTP Client
que foi criado. - Em
Interaction
, selecionesendRequest
. - Clique em
Request
para 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ãoui
do lado desetter
. Isso irá adicionar umSetter
comModule
pré-preenchido paraUIState
. - Clique no
Setter
, em seguida clique emPick Component
. Clique no próprioBlock
do botão, e emState Prop
, selecioneresponse
. - Em
Value
, clique emf()
e selecioneContext Reference
para transformá-lo em umdata2-core-types@Reference
. - Em
Reference
, escrevaprevResult
. - Estilize o botão como desejar.
- Salve o
Block
clicando emSave
ou 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
JSONViewer
no fim doInspector
, mude o tipo deJSON
paraGetter
clicando no botãof()
e selecionando oui
ao lado dogetter
(nesse passo, você também poderia clicar noGetter
para navegar, e emModule
selecionarUIState
) - Em
Prop
, clique emPick Component
, passe o mouse em cima doBlock
do botão, e selecioneresponse
. - Salve o
JSONViewer
clicando emSave
ou desselecionando. - Clique no botão de preview do
Artboard
para 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 Definitions
chamadopokemonNumber
, selecionedata2-core-primitives@Number
emComponent
, e noInitial Value
coloque 1. - Crie outro estado no
State Definitions
chamadoresponse
, selecionedata2-core-primitives@Object
emComponent
, e noInitial Value
, clique nof()
e selecioneObject
. - No
On Click
, clique nof()
e selecioneSeries
. - Na primeira ação do
Series
, emModule
selecione oHTTP Client
que foi criado. - Em
Interaction
, selecionesendRequest
. - Clique em
Request
para 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 selecioneui
ao lado degetter
. Clique para navegar. noGetter
para navegar. - Em
Prop
, clique emPick Component
e selecione oBlock
do botão. EmState Prop
, selecionepokemonNumber
. - Adicione uma segunda ação.
- Clique em
f()
e selecione o botãoui
do lado desetter
. Isso irá adicionar umSetter
comModule
pré-preenchido paraUIState
. - Clique no
Setter
, em seguida clique emPick Component
. Clique noBlock
do 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 noModule
selecioneUIState
. - Em
Prop
, clique emPick Component
, passe o mouse em cima doBlock
do 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 doBlock
do botão, e selecionepokemonNumber
. - Em
Type
, selecionenumber
. - Salve.
- Clique no botão de preview do
Artboard
para 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
POST
como 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 emMock
para oInspector
navegar 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
Inspector
e clique emData
. - No cabeçalho, ao lado de
Object
, clique em+
para adicionar uma chave ao objeto. - Coloque
url
como chave e emtype
, selecionedata2-core-types / Reference
para criar a chave com o tipo correto. - Clique no parâmetro adicionado, e em
Reference
coloqueurl
. - Salve.
- Clique em
Send
para 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
).