Top Banner
DESBRAVANDO O REST COM PYTHON @fidelissaur o
74

Desbravando o REST com Python

Apr 15, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Desbravando o REST com Python

DESBRAVANDO O REST COM

PYTHON

@fidelissauro

Page 2: Desbravando o REST com Python

$ whoami

Matheus FidelisDesenvolvedor Backend / DevOps

@superlogica

Twitter: @fidelissauroE-mail: [email protected]

Github: https://github.com/msfidelisBlog: http://nanoshots.com.br

Page 3: Desbravando o REST com Python

O QUE SÃO API`s?

1

Page 4: Desbravando o REST com Python

“Application Programming

Language

Page 5: Desbravando o REST com Python

API

⊡Conjunto de recursos e funções.⊡Desenvolvimento desacoplado.⊡Garantir um acesso uniforme a sua

aplicação⊡Independente de linguagem, paradigma ou

plaforma.

Page 6: Desbravando o REST com Python

““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

Page 7: Desbravando o REST com Python

API

Page 8: Desbravando o REST com Python
Page 9: Desbravando o REST com Python

“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.

Page 10: Desbravando o REST com Python

Page 11: Desbravando o REST com Python

RESOURCES

2

Page 12: Desbravando o REST com Python

“RESOURCES são elementos manipulados a partir de um

identificador global.

Todos os dados tem ID’s

Page 13: Desbravando o REST com Python

“Recurso: Cobrança

id: api.xuxu.com/cobranca

Page 14: Desbravando o REST com Python

“A nomeação de um recurso sempre é formada por um substantivo,

nunca um verbo.

http://api.xuxu.com/cobrar http://api.xuxu.com/cobranca

Page 15: Desbravando o REST com Python

“URI

Page 16: Desbravando o REST com Python

“URL

Page 17: Desbravando o REST com Python

VERBOS HTTP

2

Page 18: Desbravando o REST com Python

“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

Page 19: Desbravando o REST com Python

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

Page 20: Desbravando o REST com Python

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

Page 21: Desbravando o REST com Python

RESPONSE CODES

2

Page 22: Desbravando o REST com Python

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

Page 23: Desbravando o REST com Python

O QUE É REST??

1

Page 24: Desbravando o REST com Python

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

Page 25: Desbravando o REST com Python

“CONSTRAINTS??

Page 26: Desbravando o REST com Python

““Modelar a forma na qual o HTTP e as URI's

deveriam ser modelados para aproveitar todos os

seus recursos”

Page 27: Desbravando o REST com Python

“Cliente / Servidor

Page 28: Desbravando o REST com Python

CLIENTE/SERVIDOR

Page 29: Desbravando o REST com Python

“Deve-se separar completamente as

responsabilidades do Cliente e do(s) Servidor(es) da

aplicação.

Page 30: Desbravando o REST com Python

“Deve-se permitir a evolução e

escalabilidade dessas responsabilidades de forma completamente separada

Page 31: Desbravando o REST com Python

“⊡ Crescimento do Frontend⊡ SPA’s⊡ Aplicações Mobile⊡ API’s que consomem outras

API’s⊡ Layers da Aplicação

Page 32: Desbravando o REST com Python

Page 33: Desbravando o REST com Python

STATELESS

Page 34: Desbravando o REST com Python

“Cada request para o servidor não devem ter ligações com a

futura nem com a anterior.

Page 35: Desbravando o REST com Python

“Cada request deve conter todas as informações

necessárias para que ela seja tratada com sucesso pelo

servidor.

Page 36: Desbravando o REST com Python

CACHE

Page 37: Desbravando o REST com Python

“Uma aplicação REST deve

permitir que suas respostas sejam passíveis de cache

Page 38: Desbravando o REST com Python

INTERFACE UNIFORME

Page 39: Desbravando o REST com Python

“⊡ Padrões nos Resources⊡ Mensagens Autodescritivas⊡ Response Codes

Page 40: Desbravando o REST com Python

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

Page 41: Desbravando o REST com Python

APPLICATION LAYERS

Page 42: Desbravando o REST com Python

“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.

Page 43: Desbravando o REST com Python

“Garantir a Escalabilidade entre

Sistemas Distribuidos.

Page 44: Desbravando o REST com Python
Page 45: Desbravando o REST com Python

HATEOAS

Page 46: Desbravando o REST com Python

“Informar o cliente pra onde ele pode ir depois de uma ação na sua API

Page 47: Desbravando o REST com Python

REST VS SOAP

2

Page 48: Desbravando o REST com Python

““O REST é um modelo de arquitetura. O SOAP é um protocolo de rede ao pé da

letra”

Page 49: Desbravando o REST com Python

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

Page 50: Desbravando o REST com Python

REQUESTS E RESPONSES HTTP

2

Page 51: Desbravando o REST com Python

“Media Types

Page 52: Desbravando o REST com Python

“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

Page 53: Desbravando o REST com Python

http://www.iana.org/assignments/media-types/media-types.xhtml

Media Types

Application/json

Application/xml

Multipart/form-data

Text/html

Page 54: Desbravando o REST com Python

“Content-Type

String no Header que identifica o conteúdo da requisição

Page 55: Desbravando o REST com Python

“AcceptA String no Header que identifica

qual o formato do retorno que deseja receber do servidor.

Page 56: Desbravando o REST com Python

REST VS RESTFUL

1

Page 57: Desbravando o REST com Python

“REST é uma convenção de Boas Práticas

RESTful é uma aplicação com o REST implementado.

Page 58: Desbravando o REST com Python

“Se minha API segue os padrões

REST, logo ela é uma API RESTful

Page 59: Desbravando o REST com Python

“Se minha API não segue os padrões

REST, logo ela é uma API HTTP

Page 60: Desbravando o REST com Python
Page 61: Desbravando o REST com Python
Page 62: Desbravando o REST com Python

REST NÃO

É REGRA

Page 63: Desbravando o REST com Python

PYTHON

Page 64: Desbravando o REST com Python

DJANGO FRAMEWORK

+DJANGO REST

Page 65: Desbravando o REST com Python

https://www.djangoproject.com/ http://www.django-rest-framework.org/

Page 66: Desbravando o REST com Python

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

Page 67: Desbravando o REST com Python

BABYSTEPSCOM DJANGO

Serializer View URLModelRegistrar Modulo

Page 68: Desbravando o REST com Python

FLASK

Page 69: Desbravando o REST com Python

http://flask.pocoo.org/

Page 70: Desbravando o REST com Python

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.

Page 71: Desbravando o REST com Python

FLASK

Page 72: Desbravando o REST com Python

https://github.com/msfidelis/restful-talk

EXEMPLOS

Page 73: Desbravando o REST com Python

Perguntas??@fidelissauro

[email protected]://github.com/msfidelis

Page 74: Desbravando o REST com Python

DOJO