Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

API Restful
Aprendendo conceitos REST
Antes de programar uma API Restful 
em nodejs, vamos entender alguns 
conceitos!
API
Interface de Programação de 
Aplicações 
Conjunto de padrões, rotinas e 
instruções de programação 
que permite que aplicações 
diferentes se conectem. 
APP(A)
APP(B)
API
Um exemplo de sistema que 
utiliza API são os sistemas 
operacionais, pois os 
diferentes programas 
instalados podem executar 
uma mesma tarefa(ler um 
arquivo), chamando funções 
do SO por meio de uma 
interface, no Windows é 
conhecida por WinAPI e no 
Linux é conhecida por SysCall
programas 
aplicativos
kernel(núcleo) 
SO
API SO
endpoint endpoint
endpoints
APIs fornecem um ou mais 
pontos de acesso(endpoints) 
para estabelecer a 
comunicação entre uma 
aplicação e a API de aplicação 
externa. Pode ser a chamada 
de funções de bibliotecas 
específicas, no caso do 
Sistemas Operacionais
Aplicação
API
endpoint
http uri
APP(cliente)
API
uri
API web
Lembrando que uma API pode 
usar como meio de 
comunicação o protocolo http , 
desta forma os endpoints 
utilizados serão as URIs e 
métodos( get, post,... ) 
associado a requisição do 
protocolo para obtenção de 
uma resposta
res
req
res
req
Uma dificuldade enfrentada 
para esse tipo de abordagem é 
que os desenvolvedores da 
aplicação cliente devem 
aprender a construir as 
requisições para a API e se não 
houver documentação clara 
e/ou uma padronização nas 
requisições, isso pode 
torna-se um grande desafio
APP(cliente)
API
uri
res
req
uri
res
req
uri
res
req
uri
res
req
Desta forma, 
utilizamos estratégias 
que permitam 
estruturar uma 
solução para 
implementação de 
uma API
Uma dessas soluções é a REST , é um 
estilo de desenvolvimento que 
significa REpresentational State 
Transfer
Transferência de Estado 
Representativo
 Um conjunto de critérios para 
padronização da comunicação entre 
aplicações que se utilizam do 
protocolo http
Recurso
Na prática, REST estabelece 
práticas para identificação e 
definição dos conjuntos de 
dados gerenciados pelo 
sistema (clientes, vendas, 
produtos, …), este conjunto é 
denominado como recurso .
API Restful é então uma API Web que 
está em conformidade com os critérios 
REST !
QUAIS SÃO OS CRITÉRIOS 
REST ?
http
1° critério
Desacoplamento cliente/servidor
Ter uma arquitetura 
cliente/servidor formada por 
clientes, servidores e recursos, 
gerenciando suas solicitações de 
forma independente , permitindo 
que mudanças ocorram sem 
impacto nas outras camadas
APP.v1(cliente)
APP(servidor)
API/REST
resreq http
APP.v2(cliente)
APP(servidor)
API/REST
resreq
2° critério
Comunicação stateless
Cada solicitação deve conter todos os 
dados necessários para que seja 
atendida. Reduzindo a necessidade de 
recursos físicos, como memória e disco, 
para manter informações dos clientes 
entre requisições, aumentando a 
escalabilidade .
3°critério
Armazenamento em cache 
Estrutura computacional para 
armazenar dados acessados 
frequentemente. Quando possível, 
os recursos devem ser 
armazenados em cache pelo 
cliente ou servidor, melhorando 
performance e escalabilidade. 
Tipos de caches: navegadores, 
proxy, gateway, CDN, proxy 
reverso e balanceadores de carga
APP(cliente)
API/REST
resreq
APP(cliente)
API/REST
resreq
cache cache
4° critério
Interface Uniforme
 Um contrato para a comunicação 
entre essas partes deve ser 
estabelecido. Para isso, há quatro 
princípios a serem seguidos:
Interface Uniforme: 1° Princípio
Identificação dos recursos
Este princípio busca padronizar os 
endpoints(URIs) para identificação dos 
recursos.
Identificação dos recursos
Use URIs amigáveis e 
padronizadas!
//use URIs amigáveis:
http://api.com/clientes
http://api.com/clientes/12
//padronize:
http://api.com/clientes
http://api.com/produto //singular
Identificação dos recursos
Evite adicionar na URI a 
operação a ser realizada no 
recurso
http://api.com/clientes/cadastrar
http://api.com/clientes/listar
Identificação dos recursos
Evite adicionar na URI o formato desejado, para isso utilize os atributos de 
negociação de conteúdo das requisições.
http://api.com/clientes/json
//use:
http://api.com/clientes --header 'Accept: application/json'
http://api.com/clientes
Identificação dos recursos
Uma boa documentação dos recursos é 
fundamental, existem várias ferramentas 
que ajudam a criar como a Swagger . Sendo 
necessário uma alteração de URI, notifique 
os clientes desse serviço previamente e 
verifique a possibilidade de manter a URI 
antiga, redirecionando para a nova.
Identificação dos recursos
Classificamos as requisições 
http por métodos/verbos , 
sendo que cada um possui um 
significado, utilizamos essa 
classificação para determinar 
o tipo de operação a ser 
realizado sobre o recurso.
GET
obter dados
POST
criar dados.
PUT
atualizar dados.
PATCH
atualizar parcialmente dados.
DELETE
apagar dados.
cliente
API/REST
Interface Uniforme: 2° Princípio
Representações dos recursos
A comunicação é feita por 
representações, indicando o 
estado atual dos recursos, 
permitindo um desacoplamento 
entre o cliente e o servidor. XML, 
JSON, HTML, CSV e outros 
formatos são utilizados. Sendo 
considerado uma boa prática 
fornecer suporte múltiplo
cliente
API/REST
<user>
 <name>ana</name>
 
<role>manager</role>
 <active>true</active>
</user>
{
 name:”ana”,
 role:”manager”,
 active:true
}
request url: api.com
method: GET
accept: 
application/json
request url: api.com
method: GET
accept: application/xml
Interface Uniforme: 3° 
Princípio
Mensagens auto-descritivas
Cada requisição deve conter 
informações suficientes para o 
servidor processar a 
informação.
cliente
API/REST
{
 name:”ana”,
 role:”manager”,
 active:true
}
request url: 
api.com/user/1
method: GET
accept: application/json
o servidor deve 
retornar os dados do 
usuário de id=1 
formatados em json
{ name:”ana”,
 role:”manager”,
 active:true,
 links: [{ "type": "GET",
 "rel": "team",
 "uri": “api.com/user/1/team"},
 {"type": "GET",
 "rel": "manager",
 "uri": 
“api.com/user/1/manager"}]
}
Interface Uniforme: 4° 
Princípio
HATEOAS
“hipermídia como o 
mecanismo do estado do 
aplicativo”
Respostas devem conter links 
de conteúdos relacionados aos 
recursos solicitados, 
orientando os clientes a 
consumirem a api sem 
conhecimento profundo dela.
cliente
API/REST
request url: 
api.com/user/1
method: GET
accept: application/json
Modelo de maturidade 
Richardson
Implementar HATEOAS é o que 
caracteriza o último nível do 
modelo de maturidade proposto 
por Leonard Richardson para 
classificar APIs do tipo Rest.
nível 0 - pox
nível 1 - recursos
nível 2 - métodos http
nível 3 - hateoas
REST
Nível 0
POX
Usar o protocolo http para 
comunicação, mas sem nenhuma 
padronização. POX é uma sigla 
para Plain Old XML , se referindo 
a representação básica do XML, 
indicando a única preocupação 
desse nível, o transporte de 
dados nível 0 - pox
nível 1 - recursos
nível 2 - métodos http
nível 3 - hateoas
REST
Nível 1
Recursos
O conceito de recursos devem 
ser considerados na 
implementação da API, 
lembrando de identificá-los via 
endpoints(URIs)
nível 0 - pox
nível 1 - recursos
nível 2 - métodos http
nível 3 - hateoas
REST
Nível 2
Métodos http
Uso correto dos métodos 
http( get, post, put, delete , …) 
para associá-los às operações 
sobre os recursos da API
nível 0 - pox
nível 1 - recursos
nível 2 - métodos http
nível 3 - hateoas
REST
Nível 3
HATEOAS
Adição de links nas respostas das 
requisições, adicionando 
informação sobre operações 
alternativas sobre o recurso 
acessado. Alguns consideram 
desnecessário esse nível de 
maturidade para considerar uma 
API Restful nível 0 - pox
nível 1 - recursos
nível 2 - métodos http
nível 3 - hateoas
REST
5°critério
Arquitetura em Camadas
Requisições e respostas passam 
por diversas camadas 
gerenciadas de forma 
independente com propósitos 
diferentes. É recomendável que o 
cliente nunca conecte-se 
diretamente no servidor de 
aplicação, passando por outras 
camadas, tais como 
balanceamento de carga, 
segurança, etc.
cliente
API/REST
camada de segurança
balanceador de carga
resreq
6° critério
Código sobre demanda(opcional)
Na maioria das vezes, um servidor retorna 
representação de recursos(XML, JSON). Porém, 
quando necessário, os servidores podem 
fornecer código executável(Javascript). Isso 
diminui a visibilidade das respostas, mas estende 
as funcionalidades do cliente. 
Conceitos de API Restful apresentados!
Próxima etapa: Implementando uma 
API Restful !
Referências para estudo
Rest - Construa APIs inteligentes de 
maneira simples de Alexandre Saudate

Mais conteúdos dessa disciplina