Rest
Rest
APIs RESTful são usadas por sites como Google, Amazon, LinkedIn e
Twitter.
3)Multiplataforma
As requisições HTTP feitas em uma Rest API retornam dados no formato
JSON. Vale ressaltar que existem outros formatos possíveis de retorno,
como o XML, entretanto, o JSON é o mais utilizado. Portanto, a maioria
dos sites que trabalha sob esse modelo recebe esse formato de dados.
Essa característica é essencial para o desenvolvimento de aplicações
multiplataformas. Isso porque, ao receber os dados nesse formato, a
camada front-end da aplicação é capaz de fazer o tratamento adequado
para a exibição dos resultados de acordo com o tipo de dispositivo
utilizado.
A utilização de Rest API é importante para adicionar diversas
funcionalidades ao site. Suas características permitem a integração com
diferentes aplicações; entre elas, as redes sociais e os sistemas de
pagamento. Por isso, é uma tecnologia que garante maior confiabilidade e
escalabilidade, além de facilitar o desenvolvimento de aplicações
multiplataformas.
Contudo, o uso do modelo REST deve ser adequadamente estudado, suas vantagens
e desvantagens devem ser pesadas para que, ao final, os resultados para o projeto
sejam realmente positivos.
Geralmente estas comunicações (entre API’s) são feitas via HTTP, mas isso
não é um requisito. O Office utuliza VBA e APIs baseadas em objetos COM
para se comunicar, que não utiliza o protocolo HTTP. Outras formas de
comunicação utilizadas são objetos COM, DLLs (arquivos .H no C/C++) e
arquivos .JAR ou RMI (Java).
As restrições do REST (Arquitetura usada)
1. Client-Server
É a restrição básica para uma aplicação REST. O objetivo desta divisão é
separar a arquiterura e responsabilidades em dois ambientes. Assim, o cliente
(consumidor do serviço) não se preocupa com tarefas do tipo: comunicação
com banco de dados, gerenciamento de cache, log, etc. E o contrário também
é válido, o servidor (provedor do serviço) não se preocupa com tarefas como:
interface, experiência do usuário, etc. Permitindo, assim, a evolução
independente das duas arquiteturas.
3. Cacheable
Como muitos clientes acessam um mesmo servidor, e muitas vezes
requisitando os mesmos recursos, é necessário que estas respostas possam
ser cacheadas, evitando processamento desnecessário e aumentando
significativamente a performance.
4. Uniform Interface
É, basicamente, um contrato para comunicação entre clientes e servidor. São
pequenas regras para deixar um componente o mais genérico possível, o
tornando muito mais fácil de ser refatorado e melhorado.
5. Layered System
A sua aplicação deve ser composta por camadas, e estas camadas devem ser
fáceis de alterar, tanto para adicionar mais camadas, quanto para removê-las.
Dito isso, um dos princípios desta restrição é que o cliente nunca deve chamar
diretamente o servidor da aplicação sem antes passar por um intermediador, no
caso, pode ser um load balancer ou qualquer outra máquina que faça a
interface com o(s) servidor(es). Isso garante que o cliente se preocupe apenas
com a comunicação com o intermediador e o intermediador fica responsável
por distribuir as requições nos servidores, seja um ou mais, indifere nesse
caso. O importante é ficar claro que criando um intermediador, a sua estrutura
fica muito mais flexível à mudanças.
6. Code-On-Demand (Opcional)
Esta condição permite que o cliente possa executar algum código sob
demanda, ou seja, estender parte da lógica do servidor para o cliente, seja
através de um applet ou scripts. Assim, diferentes clientes podem se comportar
de maneiras específicas mesmo que utilizando exatamente os mesmos
serviços providos pelo servidor.
Como este item não faz parte da arquitetura em si, ele é considerado opcional.
Ele pode ser utilizado quando executar alguma parte do serviço do lado do
cliente for mais eficaz ou rápida.
Resources
O REST é Resource Based. Esse termo irei tratar com o nome em inglês pois é
um item chave dentro do conceito.
●
Resposta
Baseado nos métodos que discutimos, o servidor deve processar cada
uma das requisições e retornar uma resposta adequada. Veja um resumo
de cada uma dessas respostas.
1XX – Informações Gerais
2XX – Sucesso
3XX – Redirecionamento
4XX – Erro no cliente
5XX – Erro no servidor
Para cada tipo que você pode ver, existe uma série de respostas
relacionadas. Por exemplo, se o servidor retornar um “200 OK”, significa
que o recurso pedido foi retornado com sucesso.
Por outro lado, se o servidor retornar um “404 Not Found”, significa que o
recurso que estamos pedindo não foi encontrado.
Serviço RESTful
http://www.contoso.com/alunos
Se queremos trazer a lista de alunos, basta realizamos uma requisição GET:
Request:
[GET] http://www.contoso.com/alunos
Body: empty
A resposta será algo como:
Response:
HTTP Code 200 OK
[
{ id: 1, nome: "Thiago Lunardi" },
{ id: 2, nome: "Joe Satriani"}
]
Request:
[POST] http://www.contoso.com/alunos
Body: { "nome: "Slash" }
Request:
[GET] http://www.contoso.com/alunos/1
Body: empty
Response:
HTTP Code 200 OK
{
id: 1,
nome: "Thiago Lunardi",
github: "https://github.com/ThiagoLunardi",
website: "http://thiagolunardi.net",
blog: "https://medium.com/@thiagolunardi",
}
Request:
[PUT] http://www.contoso.com/alunos/1
Body: { "twitter": "@thiagolunardi13" }
Response:
HTTP Code 200 OK
{
id: 1,
nome: "Thiago Lunardi",
github: "https://github.com/ThiagoLunardi",
website: "http://thiagolunardi.net",
blog: "https://medium.com/@thiagolunardi",
twitter: "@thiagolunardi13"
}
Para excluir:
Request:
[DELETE] http://www.contoso.com/alunos/1
Body: empty
Response:
HTTP Code 204 No Content
Referencias
https://pt.stackoverflow.com/questions/45783/o-que-%C3%A9-rest-e-restful/45787
https://www.totvs.com/blog/developers/rest/
https://www.devmedia.com.br/conhecendo-o-modelo-arquitetural-rest/28052
https://imasters.com.br/desenvolvimento/definicao-restricoes-e-beneficios-modelo-de-arquite
tura-rest
https://rockcontent.com/blog/rest-api/