Upload
matheus-fidelis
View
102
Download
0
Embed Size (px)
Citation preview
$ whoami
Matheus FidelisDesenvolvedor Backend / DevOps
@superlogica
Twitter: @fidelissauroE-mail: [email protected]
Github: https://github.com/msfidelisBlog: http://nanoshots.com.br
API
⊡Conjunto de recursos e funções.⊡Desenvolvimento desacoplado.⊡Garantir um acesso uniforme a sua
aplicação⊡Independente de linguagem, paradigma ou
plaforma.
““Conjunto de “coisinhas” da sua aplicação que você disponibiliza para outras pessoas
acessarem da forma que elas quiserem por onde quiserem sem ninguém precisar
entender como elas funcionam”
⊡ FIDELIS, Matheus
“Prover uma maneira simples e uniforme para Aplicações Web, Apps Android, IOS, Televisões, Geladeiras, Carros, Cafeteiras, Arduinos, Seres
Alienígenas e até mesmo outras API’s a acessarem e modificarem seus dados
falando a mesma língua.
“A nomeação de um recurso sempre é formada por um substantivo,
nunca um verbo.
http://api.xuxu.com/cobrar http://api.xuxu.com/cobranca
“São métodos que podemos utilizar para criar uma API RESTful.
Atualmente são 9, e possuem finalidades de aplicar operações a
serem efetuadas sob um determinado recurso
PRINCIPAIS VERBOSMethod Ação
GET OBTEM DADOS DE UM REGISTRO
POST CRIA UM NOVO REGISTRO
PUT SUBSTITUI DADOS DE UM REGISTRO
DELETE DELETA UM REGISTRO
VERBOS HTTP
OUTROS VERBOSMethod Ação
HEAD RETORNA O CABEÇALHO DA REQUEST
OPTIONS RETORNA QUAIS MÉTODOS ESTÃO DISPONÍVEIS
PATCH MODIFICAÇÕES PARCIAIS NO REGISTRO
TRACE RETORNA A REQUISIÇÃO FEITA PARA COMPARAR MODIFICAÇÕES
CONNECT CRIA UMA CONEXÃO TCP COM O SERVIDOR
VERBOS HTTP
RESPONSE CODESCODES STATUS
100* INFORMATION RESPONSES
200* SUCCESSFUL RESPONSES
300* REDIRECTION MESSAGES
400* CLIENT ERROR RESPONSES
500* SERVER ERROR RESPONSES
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
REST
⊡REST (Representational State Transfer)⊡Formalização de um conjunto de boas
práticas do uso do HTTP⊡Tirar o melhor proveito possível dos
recursos que o HTTP disponibiliza⊡Constraints
““Modelar a forma na qual o HTTP e as URI's
deveriam ser modelados para aproveitar todos os
seus recursos”
“Deve-se permitir a evolução e
escalabilidade dessas responsabilidades de forma completamente separada
“⊡ Crescimento do Frontend⊡ SPA’s⊡ Aplicações Mobile⊡ API’s que consomem outras
API’s⊡ Layers da Aplicação
“Cada request deve conter todas as informações
necessárias para que ela seja tratada com sucesso pelo
servidor.
GET: /pegarUsuario Status: 200 GET: /usuario Status: 200
POST: /novoUsuario Status: 200 POST: /usuario Status: 201
PUT: /atualizarUsuario Status: 200 PUT: /usuario Status: 200
DELETE: /deletarUsuario Status: 200 DELETE:/usuario Status: 204
“Uma aplicação REST deve ter a capacidade de adicionar elementos
intermediários de forma transparente
Ex: Load Balances, Cache Servers, Gateways, Analytics, WAF e etc.
REST VS SOAP
REST SOAP
MODELO ARQUITETURAL PROTOCOLO
REQUESTS VIA HTTP SIMPLESCHAMADAS SOAP EMPACOTADAS QUE
UTILIZAM O HTTP PARA EXECUTAR CHAMADAS RPC
(REMOTE PROCEDURE CALL)
JSON, XML, YAML, HTML... APENAS XML
“Media Types
Media Type é uma string que define qual o formato do dado e como ele
deve ser lido.http://www.iana.org/assignments/media-types/media-types.xhtml
“
http://www.iana.org/assignments/media-types/media-types.xhtml
Media Types
Application/json
Application/xml
Multipart/form-data
Text/html
DJANGO REST FRAMEWORK
● Extensão do Django Framework● Framework MVC em Python● Configuração um pouco complexa● Várias camadas● Aplicação Modular● Referência em aproveitamento dos recursos
HTTP ● Suporte para Migrations● Suporte para Serialização● Suporte para Content Negotiation Inteligente● Ideal pra API’s com maior porte e maior numero
de devs na equipe
FLASK
● Micro Framework em Python● Quickstart Rápido● Bem leve e escalável● Muito verboso ● Requer muita implementação manual● Ideal pra coisas simples e abstração de recursos
da infraestrutura.