Entendendo o funcionamento de uma API WEB REST
Tags: api, webdev, restapi, programming
Published: 2023-12-12 23:12:56

Antes de qualquer coisa, é essencial compreender alguns processos básicos.
# Introdução às APIs web

Primeiramente precisamos dividir a forma em que vemos a WEB em dois termos, o CLIENT-SIDE (O navegador) e o SERVER-SIDE (O servidor). Ao acessarmos um site, o client tem a função de enviar as solicitações necessárias ao servidor. Por exemplo, ao buscar um item na Amazon, nesse momento o client faria uma solicitação para o servidor, onde após todo o processo de gerenciamento dos dados, retornaria uma resposta ao client com os dados desse item, que seriam exibidos ao usuário no site.

Toda essa comunicação utiliza o protocolo HTTPS em conjunto com a arquitetura REST, que vamos entender agora.

# REST ou Representational State Transfer

É uma arquitetura que fornece padrões de comunicações entre Sistemas utilizando a WEB, existem vários conceitos aplicados nessa arquitetura, mas os que vamos abordar aqui, são eles: **Verbos** e **Stateless**.

**VERBOS:** Quando falamos de solicitações ao servidor, utilizamos alguns verbos para determinar o tipo de solicitação que está sendo enviada, sendo elas:

- **GET**- Recuperar um recurso, como a busca de um item específico na Amazon;
- **POST**- Criar um novo recurso;
- **PUT**- Atualizar completamente um recurso;
- **PATCH**- Atualizar parcialmente um recurso;
- **DELETE**- Remover um recurso.

**STATELESS:** Você pode imaginar que sites famosos como a Amazon por exemplo, possui milhões de acessos todos os dias, pense que para cada usuário utilizando a plataforma, é feita uma solicitação ao servidor. Por conta desses inúmeros acessos, precisamos manter um bom desempenho no servidor, e uma das práticas utilizadas é que o servidor não necessite de contexto, isso quer dizer que ao receber uma solicitação, o servidor não precise saber necessariamente quem é o usuário e o que o mesmo solicitou anteriormente. Dessa forma, toda requisição é única, não armazenando estados e solicitações anteriores. Mesmo assim, o servidor consegue facilmente entender qual é sua solicitação e o que deve fazer por meio do tipo de verbo que está sendo utilizado.

# Agora que entendemos um pouco sobre REST, vamos de fato ver sobre a API WEB.

Uma API é, essencialmente, uma interface que nos permite solicitar e receber dados, pense na API como uma espécie de "contrato" entre diferentes sistemas. Ela define como um sistema deve interagir com o outro, quais operações podem ser realizadas e quais dados estão disponíveis para acesso. No contexto WEB, a API é a interface usada para fazermos solicitações ao servidor, no entanto, é necessário especificar a ação que o servidor deve executar, e é aí que entram os ENDPOINTS.

# Endpoints

Como o nome sugere, são pontos finais ou caminhos finais, no momento que precisamos acessar um recurso do servidor, precisamos de um caminho que nos leve até esse recurso, até o "caminho final" e esse caminho é um endpoint, vamos ver um exemplo simples disso.

**Exemplo**: Voltando novamente no exemplo que utilizamos acima, você acessou o site da Amazon e precisa comprar um item, nesse momento você faz uma busca pelo item no site por meio de um campo de pesquisa. Por trás dos panos, o que está acontecendo, é que seu navegador ou client, está fazendo uma solicitação ao servidor e essa solicitação é iniciada por meio de um ENDPOINT, todo esse caminho para iniciarmos nossa solicitação, seria dessa forma:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8u2q42cd7ajw4zzihklm.png)

Tá, vamos quebrar esse caminho em partes, temos primeiramente a URL do servidor da Amazon, que no nosso caso seria essa: 

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xgfaks3v16732c23jefk.png)

E agora para informar ao servidor necessariamente qual ação ele necessita executar, o endpoint é chamado:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hp5qcbmpynr9tdj3usk8.png)

Dessa forma estamos informando ao servidor que ele precisa buscar um item, com o nome "camera", formando assim a URI completa:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dqsg241f666r4q59pd0y.png)

Com a URI completa, é feita a request para o servidor, que no final de todo seu processo, nos retorna a response com as informações do nosso item, podendo ser em JSON, XML e YAML, um exemplo em JSON seria assim:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bp21h4o8msnrgujq86vz.png)

# Conclusão
Dessa forma podemos entender que, um endpoint é nada mais nada menos que um caminho específico para informar qual ação o servidor deve executar. Importante lembrar que junto a esse endpoint, também precisamos informar o VERBO da solicitação ao servidor.

Espero que eu tenha te ajudado a entender o funcionamento de uma API WEB de como ela é extremamente importante na internet hoje em dia, caso tenha surgido alguma dúvida ou queira acrescentar alguma coisa, sinta-se a vontade!