Slide 1

Slide 1 text

DESBRAVANDO O REST COM PYTHON @fidelissauro

Slide 2

Slide 2 text

$ whoami Matheus Fidelis Desenvolvedor Backend / DevOps @superlogica Twitter: @fidelissauro E-mail: [email protected] Github: https://github.com/msfidelis Blog: http://nanoshots.com.br

Slide 3

Slide 3 text

O QUE SÃO API`s? 1

Slide 4

Slide 4 text

“ Application Programming Language

Slide 5

Slide 5 text

API ⊡ Conjunto de recursos e funções. ⊡ Desenvolvimento desacoplado. ⊡ Garantir um acesso uniforme a sua aplicação ⊡ Independente de linguagem, paradigma ou plaforma.

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

API

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

Slide 11

Slide 11 text

RESOURCES 2

Slide 12

Slide 12 text

“ RESOURCES são elementos manipulados a partir de um identificador global. Todos os dados tem ID’s

Slide 13

Slide 13 text

“ Recurso: Cobrança id: api.xuxu.com/cobranca

Slide 14

Slide 14 text

“ A nomeação de um recurso sempre é formada por um substantivo, nunca um verbo. http://api.xuxu.com/cobrar http://api.xuxu.com/cobranca

Slide 15

Slide 15 text

“ URI

Slide 16

Slide 16 text

“ URL

Slide 17

Slide 17 text

VERBOS HTTP 2

Slide 18

Slide 18 text

“ 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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

RESPONSE CODES 2

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

O QUE É REST?? 1

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

“ CONSTRAINTS??

Slide 26

Slide 26 text

“ “Modelar a forma na qual o HTTP e as URI's deveriam ser modelados para aproveitar todos os seus recursos”

Slide 27

Slide 27 text

“ Cliente / Servidor

Slide 28

Slide 28 text

CLIENTE/SERVIDOR

Slide 29

Slide 29 text

“ Deve-se separar completamente as responsabilidades do Cliente e do(s) Servidor(es) da aplicação.

Slide 30

Slide 30 text

“ Deve-se permitir a evolução e escalabilidade dessas responsabilidades de forma completamente separada

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Slide 33

Slide 33 text

STATELESS

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

“ Cada request deve conter todas as informações necessárias para que ela seja tratada com sucesso pelo servidor.

Slide 36

Slide 36 text

CACHE

Slide 37

Slide 37 text

“ Uma aplicação REST deve permitir que suas respostas sejam passíveis de cache

Slide 38

Slide 38 text

INTERFACE UNIFORME

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

APPLICATION LAYERS

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

“ Garantir a Escalabilidade entre Sistemas Distribuidos.

Slide 44

Slide 44 text

No content

Slide 45

Slide 45 text

HATEOAS

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

REST VS SOAP 2

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

REQUESTS E RESPONSES HTTP 2

Slide 51

Slide 51 text

“ Media Types

Slide 52

Slide 52 text

“ 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

Slide 53

Slide 53 text

“ http://www.iana.org/assignments/media-types/media-types.xhtml Media Types Application/json Application/xml Multipart/form-data Text/html

Slide 54

Slide 54 text

“ Content-Type String no Header que identifica o conteúdo da requisição

Slide 55

Slide 55 text

“ Accept A String no Header que identifica qual o formato do retorno que deseja receber do servidor.

Slide 56

Slide 56 text

REST VS RESTFUL 1

Slide 57

Slide 57 text

“ REST é uma convenção de Boas Práticas RESTful é uma aplicação com o REST implementado.

Slide 58

Slide 58 text

“ Se minha API segue os padrões REST, logo ela é uma API RESTful

Slide 59

Slide 59 text

“ Se minha API não segue os padrões REST, logo ela é uma API HTTP

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

REST NÃO É REGRA

Slide 63

Slide 63 text

PYTHON

Slide 64

Slide 64 text

DJANGO FRAMEWORK + DJANGO REST

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

BABYSTEPS COM DJANGO Serializer View URL Model Registrar Modulo

Slide 68

Slide 68 text

FLASK

Slide 69

Slide 69 text

http://flask.pocoo.org/

Slide 70

Slide 70 text

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.

Slide 71

Slide 71 text

FLASK

Slide 72

Slide 72 text

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

Slide 73

Slide 73 text

Perguntas?? @fidelissauro [email protected] https://github.com/msfidelis

Slide 74

Slide 74 text

DOJO