Desbravando o REST com Python

74
DESBRAVANDO O REST COM PYTHON @fidelissaur o

Transcript of Desbravando o REST com Python

DESBRAVANDO O REST COM

PYTHON

@fidelissauro

$ whoami

Matheus FidelisDesenvolvedor Backend / DevOps

@superlogica

Twitter: @fidelissauroE-mail: [email protected]

Github: https://github.com/msfidelisBlog: 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 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 CODES

2

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

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

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

BABYSTEPSCOM DJANGO

Serializer View URLModelRegistrar 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

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

DOJO