# Acesso a APIs abordando o padrão REST

## Introdução

Neste tutorial vamos conhecer um pouco sobre as requisições de API utilizando o HTTP Request, um poderoso conector que permite configurar chamadas utilizando os métodos GET, POST, PUT ou DELETE.<br>

<figure><img src="/files/PzJiooXjVjpHusr5M6fI" alt=""><figcaption></figcaption></figure>

## **Requisitos** <a href="#lhslrwqzpnoa" id="lhslrwqzpnoa"></a>

* Você vai precisar de uma URL para teste dos dados. Neste exemplo usamos o site <https://random-data-api.com/documentation>

## **Conectores relacionados** <a href="#jo5g8fp8d0f5" id="jo5g8fp8d0f5"></a>

1. [HTTP In](/guia/conectores/categorias/triggers/http-in.md)
2. [HTTP Request](/guia/conectores/categorias/conectores-essenciais/http-request.md)
3. [Condition](/guia/conectores/categorias/conectores-essenciais/condition.md)
4. [HTTP Out](/guia/conectores/categorias/conectores-essenciais/http-out.md)
5. [Debugger](/guia/conectores/categorias/monitoramento/debugger.md)

## **Passo a passo** <a href="#jo5g8fp8d0f5" id="jo5g8fp8d0f5"></a>

### **1. Iniciando o fluxo** <a href="#jjl8ryf4yzil" id="jjl8ryf4yzil"></a>

O conector HTTP In monitora uma URL defina pelo Workspace e observa sempre que uma requisição de determinado tipo é realizada por um cliente, seja através do navegador ou código.

A rota sempre será composta pela URL do Workspace + o caminho definido através do atributo **Route** no componente.&#x20;

<div><figure><img src="/files/xw4lzFmn9K0sh1Au45bq" alt="" width="563"><figcaption><p>Configurando o HTTP in</p></figcaption></figure> <figure><img src="/files/jOVH2qxYI7NSHkSbzSUr" alt=""><figcaption><p>Saída dos dados</p></figcaption></figure></div>

Usando o Debugger podemos observar que a requisição é acompanhada sempre de dois objetos, o req e a carga de payload do componente. Caso o componente estive aguardando algum dado vindo da requisição, você precisaria acessar a carga de payload do componente para manipula-lo.&#x20;

<div align="left"><figure><img src="/files/nzds3T67bYPdw0etEGel" alt=""><figcaption></figcaption></figure></div>

Podemos observar ainda que a requisição **req**, padrão do Floui, trás algumas informações como IP, url do host, parâmetros, arquivos, um corpo, cabeçalhos e outros atributos que podem ser usados de acordo com a sua necessidade.&#x20;

### **2. Solicitando dados de uma API** <a href="#j7pjn8ler8j3" id="j7pjn8ler8j3"></a>

Este passo vai depender do desenvolvedor parceiro que ofereceu a API. Por segurança, é essencial seguir as diretrizes e autenticações fornecidas pelo desenvolvedor da API. Certifique-se de utilizar métodos seguros, como HTTPS, e tratar os dados de forma responsável, evitando exposição indevida de informações sensíveis.&#x20;

{% hint style="success" %}
Consulte a documentação da API para entender os endpoints disponíveis, os parâmetros necessários e os formatos de resposta esperados.
{% endhint %}

Voltando ao nosso exemplo, o random data não exige tokens ou cabeçalhos específicos além dos padrões já enviados em todas as requisições, isso torna o nosso exemplo simples e de fácil compreensão.

<div><figure><img src="/files/43NeFYjMQKdLh6khTHF7" alt="" width="563"><figcaption><p>Configuração do HTTP Request</p></figcaption></figure> <figure><img src="/files/iMKjrINx1ucDFmbQMTjq" alt=""><figcaption><p>Saída de dados retornado pela API</p></figcaption></figure></div>

Diferente do HTTP In, o HTTP Request retorna três objetos:

* a "carga de payload": renomeado para **beers**;
* o "response": que contém informações do status e mensagem;
* o "request": que fornece detalhes do tipo de requisição realizada.

<div align="left"><figure><img src="/files/0Ta50SN7kjLecSATR74a" alt="" width="377"><figcaption><p>Payload do HTTP Request</p></figcaption></figure></div>

### **3. Tratando erros** <a href="#tallvq8c1xeo" id="tallvq8c1xeo"></a>

As etapas de validações são sempre um passo fundamental para prevenir erros não mapeados. Os condicionais são os exemplos mais comuns de como você pode observar atributos de requisições e tomar decisões com base no seu resultado.&#x20;

<div align="left"><figure><img src="/files/A7aoh6DW5ixNCcFkITGp" alt=""><figcaption></figcaption></figure></div>

Tratar erros é essencial para garantir que seu sistema seja robusto. As validações, muitas vezes implementadas por meio de condicionais, são fundamentais para identificar e lidar com problemas em suas requisições. Certifique-se de considerar uma abordagem abrangente ao validar atributos, para evitar erros não mapeados e promover a estabilidade do sistema.

### **4. Exportando os dados** <a href="#pxbte5j94b2g" id="pxbte5j94b2g"></a>

Por fim, exportamos os dados da requisição através do HTTP Out, que usa a mesma URL criada no passo 1 através do HTTP In para exibir os dados.

<div align="left"><figure><img src="/files/Dgg7jLaNgjL9mybpXKuy" alt="" width="544"><figcaption></figcaption></figure></div>

## **Conclusão** <a href="#qsck08tluuhe" id="qsck08tluuhe"></a>

Neste artigo, exploramos a manipulação de requisições de APIs externas por meio do HTTP Request. Além disso, discutimos a criação de links públicos em seu Workspace para monitorar requisições e exportar dados.&#x20;

Se surgirem dúvidas durante o processo, não hesite em compartilhá-las conosco, utilizando a abertura de chamados disponível em <https://floui.freshdesk.com/>. Estamos aqui para ajudar a esclarecer qualquer questionamento que possa surgir.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.floui.io/guia/artigos/tutoriais/acesso-a-apis-abordando-o-padrao-rest.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
