Um projeto Rest API - P1
Tags: rest, api, programming, beginners
Published: 2022-09-04 13:13:31

Fala pessoal! Tudo bem? 

Hoje vim falar um pouco com vocês sobre Rest API's. Um assunto bem comentado e muito necessário no aprendizado do dev backend, até porque saber desenvolver aplicações baseadas em Rest se tornou um dos pré-requisitos para conquistar aquele primeiro emprego.

Se você é alguém que está buscando novos conhecimentos, querendo se aprofundar um pouco nesse mundo de Rest ou até mesmo relembrar conceitos básicos, mas necessários, continue aqui nesse post.

Boa leitura e espero que goste! :D

---
## O que é REST?

REpresentational State Transfer significa, de forma literal, Transferência de Estado Representacional, Rest não é um framework, uma linguagem, aplicação, nem nada disso. 

É um **modelo** para desenvolvimento de arquiteturas que traz em seu escopo diretrizes/padrões de comunicação para serem utilizadas na definição bem as interfaces de projetos e as mesmas devem ser muito bem delimitadas. Esse modelo possibilita a produção de sistemas distribuídos mais eficientes e confiáveis.

>
> Na internet, a REST é um estilo, e o HTTP é um padrão.
> 
 
##As constraints REST
As mesmas que são determinadas pela arquitetura Rest são:

**1. Cliente-Servidor**: ambos separados e independentes;

**2. Stateless**: a comunicação entre o cliente e o servidor deve ser sem estado _(No escopo da requisição deve conter tudo o que é necessário para que seja processada da forma correta)_;

**3. Cache**: as respostas devem informar de modo claro se devem ser armazenadas em cache ou não;

**4. Interface uniforme**: todos os provedores e consumidores devem compartilhar uma única interface do usuário para todas as operações _(Dá possibilidade para que as partes envolvidas evoluam de forma independente)_;

**5. Sistema em camadas**: habilidade de adicionar ou remover intermediários em tempo de execução sem que haja a interrupção do sistema;

**6. Codificação sob demanda (opcional)**: a lógica em clientes pode ser atualizada independentemente da lógica do servidor usando código executável fornecido de provedores no lado cliente.

Lembrando que, aplicações que implementam a arquitetura RESTful, são aquelas que implementam todas as restrições citadas acima.

Uma das vantagens é que aplicações REST são independentes de linguagens,por exemplo, o backend pode ser em Java e o frontend em React.

## Mas, e API?
As API's (Application Programming Interface) são um conjunto de requisições que permite a comunicação de dados entre as aplicações. Como no exemplo citado acima, o Cliente-Servidor.

As API's utilizam-se das requisições HTTP que são responsáveis pela manipulação de dados, ou seja solicitar o CRUD em um dado armazenado, aquele a gente vê em Banco de Dados (Create Read, Update e Delete), aqui são responsáveis por isso os verbos POST, GET, PUT, DELETE, PATCH, OPTIONS, HEAD, e mais uma infinidade deles.

---

## E agora?
Nas próximas publicações pretendo trazer a produção de uma Rest API usando o Spring Tools Suite 4, além do Docker para rodar o MySQL e o PHPMyAdmin, Jakarta EE, Lombok, FlyWay, e, por enquanto, vamos ver os resultados através do Postman. _Futuramente, vou estar publicando um projeto frontend utilizando React._

Aguardem!
Fique na Paz e até mais! 

.
.
.
(viu algum erro ou discrepância? manda uma mensagem :D)