SlideShare uma empresa Scribd logo
1 de 74
DESBRAVANDO
O REST COM PYTHON
@fidelissauro
$ whoami
Matheus Fidelis
Desenvolvedor Backend / DevOps
@superlogica
Twitter: @fidelissauro
E-mail: msfidelis01@gmail.com
Github: https://github.com/msfidelis
Blog: http://nanoshots.com.br
O QUE SÃO API`s?
1
“
Application Programming
Language
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
API
“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.
“
RESOURCES
2
“RESOURCES são elementos
manipulados a partir de um
identificador global.
Todos os dados tem ID’s
“
Recurso: Cobrança
id: api.xuxu.com/cobranca
“A nomeação de um recurso sempre é
formada por um substantivo, nunca
um verbo.
http://api.xuxu.com/cobrar http://api.xuxu.com/cobranca
“
URI
“
URL
VERBOS HTTP
2
“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 VERBOS
Method 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 VERBOS
Method 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 CODES
2
RESPONSE CODES
CODES 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
O QUE É REST??
1
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
“
CONSTRAINTS??
““Modelar a forma na qual
o HTTP e as URI's
deveriam ser modelados
para aproveitar todos os
seus recursos”
“
Cliente / Servidor
CLIENTE/SERVIDOR
“Deve-se separar
completamente as
responsabilidades do Cliente e
do(s) Servidor(es) da aplicação.
“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
“
STATELESS
“
Cada request para o servidor
não devem ter ligações com a
futura nem com a anterior.
“Cada request deve conter todas
as informações necessárias para
que ela seja tratada com sucesso
pelo servidor.
CACHE
“
Uma aplicação REST deve
permitir que suas respostas
sejam passíveis de cache
INTERFACE
UNIFORME
“
⊡Padrões nos Resources
⊡Mensagens Autodescritivas
⊡Response Codes
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
APPLICATION
LAYERS
“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.
“
Garantir a Escalabilidade entre
Sistemas Distribuidos.
HATEOAS
“Informar o cliente pra onde ele pode ir
depois de uma ação na sua API
REST VS SOAP
2
““O REST é um modelo de
arquitetura. O SOAP é um
protocolo de rede ao pé da
letra”
REST VS SOAP
REST
SOAP
MODELO ARQUITETURAL PROTOCOLO
REQUESTS VIA HTTP SIMPLES
CHAMADAS SOAP EMPACOTADAS QUE
UTILIZAM O HTTP PARA EXECUTAR
CHAMADAS RPC
(REMOTE PROCEDURE CALL)
JSON, XML, YAML, HTML... APENAS XML
REQUESTS E
RESPONSES HTTP
2
“
Media Types
“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
“Content-Type
String no Header que identifica o
conteúdo da requisição
“Accept
A String no Header que identifica qual
o formato do retorno que deseja
receber do servidor.
REST VS RESTFUL
1
“REST é uma convenção de Boas
Práticas
RESTful é uma aplicação com o REST
implementado.
“
Se minha API segue os padrões REST,
logo ela é uma API RESTful
“
Se minha API não segue os padrões
REST, logo ela é uma API HTTP
REST
NÃO
É
REGRA
PYTHON
DJANGO
FRAMEWORK
+
DJANGO REST
https://www.djangoproject.com/ http://www.django-rest-framework.org/
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
BABYSTEPS
COM DJANGO
Serializer View URLModel
Registrar
Modulo
FLASK
http://flask.pocoo.org/
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.
FLASK
https://github.com/msfidelis/restful-talk
EXEMPLOS
Perguntas??
@fidelissauro
msfidelis01@gmail.com
https://github.com/msfidelis
DOJO

Mais conteúdo relacionado

Semelhante a Desbravando o REST com Python

201406Carvalho
201406Carvalho201406Carvalho
201406CarvalhoAfonso Pra
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EELuan Felipe Knebel
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixAndré Déo
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...Tchelinux
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsHeider Lopes
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo Fmdmansur
 
Rest Java One
Rest Java OneRest Java One
Rest Java OneDextra
 
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES RESTINTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES RESTRafael Bitencourt
 
WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkMario Guedes
 
WordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosWordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosJackson F. de A. Mafra
 
Web services com restful
Web services com restfulWeb services com restful
Web services com restfulRaquel Machado
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web APIVinicius Mussak
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfBrunoAlbuquerque864673
 

Semelhante a Desbravando o REST com Python (20)

Web apis
Web apisWeb apis
Web apis
 
PHP nas Nuvens
PHP nas NuvensPHP nas Nuvens
PHP nas Nuvens
 
201406Carvalho
201406Carvalho201406Carvalho
201406Carvalho
 
Desenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EEDesenvolvimento de uma API RESTful com Java EE
Desenvolvimento de uma API RESTful com Java EE
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com Zabbix
 
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
APIs, REST e RESTful: O que os programadores precisam saber? - Marcos Echevar...
 
Web Service - XML
Web Service - XMLWeb Service - XML
Web Service - XML
 
Workshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIsWorkshop do Bem: O mundo das APIs
Workshop do Bem: O mundo das APIs
 
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASO MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMAS
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 
Rest Java One
Rest Java OneRest Java One
Rest Java One
 
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES RESTINTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST
INTEGRAÇÃO DE APLICAÇÃO ANDROID COM WEB SERVICES REST
 
WCPOA2019 - WordPress como um backend de seus aplicativos
WCPOA2019  - WordPress como um backend de seus aplicativosWCPOA2019  - WordPress como um backend de seus aplicativos
WCPOA2019 - WordPress como um backend de seus aplicativos
 
Conhecendo o Novo REST Framework
Conhecendo o Novo REST FrameworkConhecendo o Novo REST Framework
Conhecendo o Novo REST Framework
 
WebServices-XML
WebServices-XMLWebServices-XML
WebServices-XML
 
WordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativosWordPress como um backend de seus aplicativos
WordPress como um backend de seus aplicativos
 
Palestra Sobre REST
Palestra Sobre RESTPalestra Sobre REST
Palestra Sobre REST
 
Web services com restful
Web services com restfulWeb services com restful
Web services com restful
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
REST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdfREST vs GraphQL - A batalha das APIs.pdf
REST vs GraphQL - A batalha das APIs.pdf
 

Mais de Matheus Fidelis

Criando API's com HapiJS
Criando API's com HapiJSCriando API's com HapiJS
Criando API's com HapiJSMatheus Fidelis
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaMatheus Fidelis
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQMatheus Fidelis
 
Desmistificando a Amazon AWS
Desmistificando a Amazon AWSDesmistificando a Amazon AWS
Desmistificando a Amazon AWSMatheus Fidelis
 
O Fantástico Mundo de Git
O Fantástico Mundo de GitO Fantástico Mundo de Git
O Fantástico Mundo de GitMatheus Fidelis
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebMatheus Fidelis
 

Mais de Matheus Fidelis (10)

Road to serverless
Road to serverlessRoad to serverless
Road to serverless
 
Criando API's com HapiJS
Criando API's com HapiJSCriando API's com HapiJS
Criando API's com HapiJS
 
Web scraping com python
Web scraping com pythonWeb scraping com python
Web scraping com python
 
Docker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG CabreúvaDocker Para Maiores - GDG Cabreúva
Docker Para Maiores - GDG Cabreúva
 
Escalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQEscalando API's com NodeJS, Docker e RabbitMQ
Escalando API's com NodeJS, Docker e RabbitMQ
 
Desmistificando a Amazon AWS
Desmistificando a Amazon AWSDesmistificando a Amazon AWS
Desmistificando a Amazon AWS
 
Docker para maiores
Docker para maioresDocker para maiores
Docker para maiores
 
O Fantástico Mundo de Git
O Fantástico Mundo de GitO Fantástico Mundo de Git
O Fantástico Mundo de Git
 
Introdução a Containers Docker
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers Docker
 
Aula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação WebAula 1 - Testando a Segurança de Sua Aplicação Web
Aula 1 - Testando a Segurança de Sua Aplicação Web
 

Desbravando o REST com Python