Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Desbravando o REST com Python

Desbravando o REST com Python

Talk sobre REST usando exemplos em Python. Foi legal esse dia no Python Campinas :D

Matheus Fidelis

December 22, 2017
Tweet

More Decks by Matheus Fidelis

Other Decks in Programming

Transcript

  1. $ whoami Matheus Fidelis Desenvolvedor Backend / DevOps @superlogica Twitter:

    @fidelissauro E-mail: [email protected] Github: https://github.com/msfidelis Blog: http://nanoshots.com.br
  2. API ⊡ Conjunto de recursos e funções. ⊡ Desenvolvimento desacoplado.

    ⊡ Garantir um acesso uniforme a sua aplicação ⊡ Independente de linguagem, paradigma ou plaforma.
  3. “ “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
  4. API

  5. “ 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.
  6. “ A nomeação de um recurso sempre é formada por

    um substantivo, nunca um verbo. http://api.xuxu.com/cobrar http://api.xuxu.com/cobranca
  7. “ 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. “ “Modelar a forma na qual o HTTP e as

    URI's deveriam ser modelados para aproveitar todos os seus recursos”
  13. “ ⊡ Crescimento do Frontend ⊡ SPA’s ⊡ Aplicações Mobile

    ⊡ API’s que consomem outras API’s ⊡ Layers da Aplicação
  14. “ Cada request deve conter todas as informações necessárias para

    que ela seja tratada com sucesso pelo servidor.
  15. 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
  16. “ 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.
  17. “ “O REST é um modelo de arquitetura. O SOAP

    é um protocolo de rede ao pé da letra”
  18. 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
  19. “ 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
  20. “ Accept A String no Header que identifica qual o

    formato do retorno que deseja receber do servidor.
  21. “ REST é uma convenção de Boas Práticas RESTful é

    uma aplicação com o REST implementado.
  22. 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
  23. 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.