SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
Desmistificando as
aplicações RESTful
usando o Django Rest
Bruno Oliveira | Instituto Federal da Bahia
Bruno Oliveira
oliveirabrunoa@gmail.com
Bruno.Oliveira21
oliveirabrunoa
http://lattes.cnpq.br/9651894815550789
INSTITUTO FEDERAL DA BAHIA
O que iremos aprender?
INSTITUTO FEDERAL DA BAHIA
Agenda
● Django Framework
○ Overview (Breve histórico, estrutura, caracteristicas etc…)
○ Exemplo Básico - primeiros passos
● Entendendo o Estilo Arquitetural REST
○ Principios e Terminologias REST
○ REST x SOAP
○ Verbos HTTP
○ Vantagens x Desvantagens
○ Quando Utilizar e Quando Não Utilizar
● Django REST
○ Exemplo Prático (Clone github)
INSTITUTO FEDERAL DA BAHIA
Um pouco de história...
Guitarrista de jazz Django
Reinhardt
● O Django foi criado originalmente para gerenciar
publicações jornalísticas do Word Online para a
construção de sites interativos em curtos
períodos de tempo. (2003)
● ...Os desenvolvedores começaram a extrair um
framework de desenvolvimento web genérico
capaz de construir aplicações Web cada vez
mais rápido.
● Em 2005, após constantes melhorias no
framework, o jornal decidiu abrir o código-fonte
do software resultante, o Django.
INSTITUTO FEDERAL DA BAHIA
Quem usa o Django?
Entre outros...https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/
INSTITUTO FEDERAL DA BAHIA
Por que usar o Django?
❖ Framework web ágil
➢ “Nós fazemos a parte repetitiva, você faz o que interessa.
❖ Utiliza o princípio Don’t repeat yourself (DRY)
➢ Apps plugáveis;
❖ Mapeamento objeto-relacional;
➢
INSTITUTO FEDERAL DA BAHIA
Por que usar o Django?
❖ Urls elegantes;
➢ Url sem padrão inteligível:
“ME2/Sites/dirmod.asp?sid=&type=gen&mod=Core+Pages&gid=A6CD4967199A42D9B65B1B”
No Django: /newsarchive/<year>/<month>/.
❖ Interface administrativa automática que inclui sistema de autenticação e
gerenciamento de permissões;
➢
INSTITUTO FEDERAL DA BAHIA
E muito mais...
❖ Conjunto de middlewares voltados para
segurança
INSTITUTO FEDERAL DA BAHIA
❖ Geodjango
E muito mais...
● Geração automática de formulários;
● Sistema de templates flexível;
● Sistema de cache;
● Geodjango framework;
● Internacionalização
● Comunidade ativa.
INSTITUTO FEDERAL DA BAHIA
MVC vs MTV
MVC
Model
View
Controller
MTV
Model
Template
View
“Se você está faminto por acrônimos, você deve dizer que Django é um framework MTV”
“No final do dia, é claro, tudo se resume a conseguir fazer coisas. Independentemente de
como as coisas são nomeadas, Django as executa da forma que é mais lógica para nós.”
INSTITUTO FEDERAL DA BAHIA
Ciclo de requisição
INSTITUTO FEDERAL DA BAHIA
Exemplo Prático
● Criando e ativando um ambiente virtual:
○ Criar diretório: mkdir <<nomedapasta>>
○ Criar um ambiente virtual dentro da pasta: python3 -m venv <<myvenv>>
○ Ativar o ambiente: source myvenv/bin/activate
● Instalando o Django Framework:
○ pip install django
Configurando o ambiente
INSTITUTO FEDERAL DA BAHIA
● Criando projeto:
○ django-admin startproject <<nomeprojeto>>
● Criando app:
○ Acesse o diretório que tem o <<nomedoprojeto>>
○ Crie um app: python manage.py startapp <<app>>
○ Execute o comando migrate para gerar a interface administrativa automaticamente:
python manage.py migrate
Criando projeto e aplicação
INSTITUTO FEDERAL DA BAHIA
● Crie um super usuário e inicie o servidor:
○ python manage.py createsuperuser
○ python manage.py runserver
● Acesse 127.0.0.1:8000.
Criando projeto e aplicação
INSTITUTO FEDERAL DA BAHIA
● Interface administrativa
Criando projeto e aplicação
INSTITUTO FEDERAL DA BAHIA
● Instale o app criado em settings.py
Criando projeto e aplicação
INSTITUTO FEDERAL DA BAHIA
Estrutura do projeto Django
INSTITUTO FEDERAL DA BAHIA
Modelos
● Um modelo define a estrutura dos objetos da aplicação. Ele contém os campos e comportamentos
essenciais dos dados que você está armazenando;
● Cada modelo é uma classe Python que herda django.db.models.Model;
● Cada atributo de um modelo representa um campo no banco de dados.
Exemplo:
INSTITUTO FEDERAL DA BAHIA
View
● Uma função do tipo view é uma função em python que recebe uma requisição (request) e retorna uma
resposta (response).
● Essa resposta pode ser o conteúdo HTML de uma página web, um redirecionamento, uma imagem…
● A própria função view contém toda a lógica necessária para consultar os dados através do model e retornar
uma resposta.
● Por convenção, essas funções do tipo view ficam em um arquivo chamado views.py
Exemplo:
INSTITUTO FEDERAL DA BAHIA
Urls
● Um esquema de URL elegante e limpo, é um detalhes importante em uma aplicação Web!
● No Django, nós usamos algo chamado URLconf (configuração de URL), que é um conjunto de padrões que Django
vai tentar coincidir com a URL recebida para encontrar a visão correta. (Expressões regulares simples)
Exemplo:
INSTITUTO FEDERAL DA BAHIA
QuerySets
● Uma vez que tenha criado seu modelos de dados, o Django automaticamente fornece uma
API de abstração do banco de dados que permite a criação,consulta, edição e deleção
objetos.
Exemplos:
>>> from administracao.models import Livro
>>> livro = Livro(titulo='Sistemas Operacionais Modernos', autor='Andrew S. Tanenbaum',
edicao=2, ....)
>>> livro.save() #Cria novo registro
>>> livros = Livro.objects.all() #Busca todos os objetos Livro no banco de dados
>>> first_livro = Livro.objects.get(pk=1) #Retorna o primeiro livro cadastrado
>>> first_livro = Livro.objects.get(pk=1)
>>> first_livro.delete() #deleta o livro de pk 1
INSTITUTO FEDERAL DA BAHIA
Formulários
● No Django, os formulários podem ser criados “do zero”, isto é, a partir da especificação de cada
tipo de dado para um modelo
● Ou, usando modelform (recomendado)
Exemplo:
INSTITUTO FEDERAL DA BAHIA
Templates
● A linguagem de templates do django é formada por tags e filtros;
● O conceito de herança de templates permite reaproveitar trechos de outros templates seguindo
a mesma lógica da herança em POO; {% extends admin/base.html' %}
● As tags (com comandos) devem estar entre as marcações {% %} e os dados {{ dados }}
Exemplo:
INSTITUTO FEDERAL DA BAHIA
Não acaba por aqui...
Django - Documentação Oficial:
https://docs.djangoproject.com/en/1.10/
INSTITUTO FEDERAL DA BAHIA
Django Girls - Tutorial em Português:
https://tutorial.djangogirls.org/pt/
O Estilo
Arquitetural REST
Por Bruno Oliveira
O problema...
INSTITUTO FEDERAL DA BAHIA
Como integrar sistemas de tecnologias e/ou plataformas diferentes?
Solução Prática 1: Banco de
Dados Compartilhado
Sistema
B
Sistema
A
Solução Prática 2: Transferência de
Arquivos
Solução Prática 3: Web Service
Rede
Um pouco de história...
SOAP (Simple Object Access Protocol)
❏ Protocolo maduro e com especificação completa
❏ Utiliza XML como formato padrão
❏ Os “envelopes” SOAP são transmitidos via HTTP
(POST)
❏ O “envelope” descreverá o serviço e parâmetros da
requisição ao servidor
❏ O servidor executa RPC
INSTITUTO FEDERAL DA BAHIA
ServicosDePedido
+obterPedidos( )
+enviarPedido( )
+obterDetalhesPedido( )
+atualizarPedido( )
+cancelarPedido( )
RPCXML
Foco nas
operações
O Estilo Arquitetural REST
REST (Representational State Transfer)
❏ “Um estilo arquitetural para sistemas de
hipermídia distribuídos”
❏ Ex: a própria WEB!
INSTITUTO FEDERAL DA BAHIA
Mas... como o
servidor vai
saber qual
serviço deve
realizar?
Através dos
métodos do
protocolo
HTTP!
Métodos HTTP
● Verbos HTTP - Operações:
○ GET – recupera a representação de um recurso.
○ POST – adiciona informações usando o recurso da URI passada. Pode adicionar
informações a um recurso existente ou criar um novo.
○ PUT – Atualiza um recurso na URI especificada.
○ DELETE – remove o recurso representado pela URI passada.
INSTITUTO FEDERAL DA BAHIA
O que muda na prática?
INSTITUTO FEDERAL DA BAHIA
Interface Específica
Interface Uniforme
INVOKE
(Post)
GET
PUT
POST
DELETE
Cliente
Cliente Recurso
ConsultarCliente ()
Agora o foco são os
recursos!
INVOKE
(Post)
INVOKE
(Post)
INVOKE
(Post)
CadastrarCliente ()
ExcluirCliente ()
AtualizarCliente ()
E se algo der errado?
● Código de Status HTTP:
○ 100 - Continue
○ 200 - OK
○ 201 - Created
○ 204 - No Content
○ 304 - Not Modified
○ 400 - Bad Request
○ 401 - Unauthorized
○ 404 - Not Found
○ 405 - Method Not Allowed
○ 500 - Internal Server Error
○ ...e muitos outros https://httpstatuses.com/
○ INSTITUTO FEDERAL DA BAHIA
Qual das abordagens é a melhor?
INSTITUTO FEDERAL DA BAHIA
Depende...
Ambos possuem vantagens e
desvantagens!
A melhor abordagem a ser utilizada
depende dos requisitos do software.
INSTITUTO FEDERAL DA BAHIA
Escalabilidade
Segurança
Performance
Facil
Implementação
Representação
Transporte
Principios e Terminologias do REST
❖ Recursos
➢ Qualquer coisa considerada relevante para sua
aplicação
■ Ex: Relatórios, Fotos, Vídeos, Recibos,
Produtos, Automóveis, Lista de Buracos nas
ruas de Salvador….
■ TUDO é um RECURSO
❖ “Um recurso é um objeto ou serviço que pode ser
identificado através de uma URI”
INSTITUTO FEDERAL DA BAHIA
Principios e Terminologias do REST
❖ Identificação do Recurso(Addressability):
➢ Os recursos serão identificados através de uma
URL que permitirá a localização e realização de
operações sobre ele.
INSTITUTO FEDERAL DA BAHIA
❖ Interface Uniforme
➢ As operações são baseadas no
protocolo HTTP (GET, POST, PUT,
DELETE)
Principios e Terminologias do REST
❖ Comunicação sem estado (Stateless)
➢ O servidor não manterá histórico de requisições!
➢ Dados relativos ao cliente (estado da aplicação)
devem ser mantidos no próprio cliente
➢ Dados relativos ao recurso devem ser mantidos no
servidor.
INSTITUTO FEDERAL DA BAHIA
❖ Cache (Cacheable)
➢ O uso de Cache no cliente auxilia no economia de processamento a partir
do armazenamento dos resultados das requisições
➢ Obs: dada a sua complexidade, este tópico não será abordado nesse minicurso.
Principios e Terminologias do REST
❖ Representações
➢ “Os recursos são dissociados de suas
representações para que seu conteúdo possa ser
acessado em uma variedade de formatos…”
➢ Ao receber uma requisição, o servidor deverá enviar
uma resposta contendo um documento (que pode
ser uma página HTML, arquivo TXT, XML, JSON,
XHTML…).
INSTITUTO FEDERAL DA BAHIA
Estilo Arquitetural REST
Principais vantagens :
● Protocolo de transferência maduro e amplamente utilizado
(HTTP)
● Escalabilidade e Alta Performance
● Uso da infraestrutura da Web a favor da aplicação
● “Facil” Implementação
● Flexibilidade de representação de recursos em diferentes
formatos
● Pode ser adotado por praticamente qualquer Cliente que
suporte HTTP/HTTPS (Interoperabilidade)
INSTITUTO FEDERAL DA BAHIA
Mas...seria o REST a solução de
todos os problemas?
INSTITUTO FEDERAL DA BAHIA
Não!
INSTITUTO FEDERAL DA BAHIA
Embora o REST proporcione
vantagens bastante atrativas, a
escolha de utilizá-lo deverá
levar em conta os requisitos do
software!
Quando utilizar e quando não
utilizar
Quando Utilizar:
● Além de todos os casos anteriormente
citados:
○ Quando há limitação de recursos ou
de largura de banda;
○ Quando a natureza da aplicação
permite o uso de cache;
○ Operações não precisam ser
continuadas (stateless);
INSTITUTO FEDERAL DA BAHIA
Quando Não Utilizar:
● Quando o sistema realiza
processamento de chamada
assíncronos;
● For necessário utilizar outro protocolo
de transporte;
● Quando há necessidade de estabelecer
contratos formais entre o cliente e o
servidor.
● E, obviamente, quando o serviço for
stateful.
Django REST
Framework (DRF)
Por Bruno Oliveira
O que é o DRF?
● É um conjunto de ferramentas construídas
a partir do Django, que facilitam a
construção de API’s REST.
● Essa apresentação terá foco no
funcionamento básico do serviço REST do
framework. Entretanto, existem váaaaarias
configurações avançadas que devem ser
consultadas através da documentação do
Django REST Framework
(http://www.django-rest-framework.org/)
INSTITUTO FEDERAL DA BAHIA
Instalação
● Instale o pacote DRF:
○ pip install djangorestframework
● Registre a aplicação:
INSTALLED_APPS = (
...
'rest_framework',
)
INSTITUTO FEDERAL DA BAHIA
Serializers
● A serialização de objetos tem como finalidade principal salvar o estado de um objeto para ser capaz de
recriá-lo quando necessário.
● Existem diversas formas de serializar objetos no Django Rest Framework. Neste tutorial, usaremos apenas
JSON.
● ModelSerializers utiliza um model como meta class para serializar objetos.
Exemplo:
INSTITUTO FEDERAL DA BAHIA
Requisições e Respostas
● APIVIEW:
○ As funções do tipo view, definidas em views.py, herdam da classe genérica
APIVIEW.
○ Os métodos da classe tratam os principais verbos do protocolo HTTP
(POST,GET,PUT,DELETE)
Exemplo:
INSTITUTO FEDERAL DA BAHIA
URL
● Agora que ja temos uma APIVIEW criada, devemos definir uma URL associada a ela:
Exemplo:
INSTITUTO FEDERAL DA BAHIA
Interface REST (Browser)
INSTITUTO FEDERAL DA BAHIA
Essa é só a ponta do Iceberg
INSTITUTO FEDERAL DA BAHIA
O Django REST Framework possui configurações
mais avançadas que não foram abordadas nesse
minicurso
Dica de estudo:
● Mecanismos de autenticação e permissão
● Estudo de outras Views (Aqui usamos apenas
APIVIEW)
● Utilizar outras representações além do JSON
● Relacionamentos e rotas
Dúvidas?
Referências
INSTITUTO FEDERAL DA BAHIA
Referências
https://docs.djangoproject.com/en/1.10/
http://www.slideshare.net/fernandogrd/arquivo-27975959
http://pt.slideshare.net/osantana/curso-de-python-e-django
https://tutorial.djangogirls.org/pt/
http://www.django-rest-framework.org/
http://imasters.com.br/desenvolvimento/definicao-restricoes-e-beneficios-modelo-de-arquitetura-rest/?trace=15190
21197&source=single
http://www.rodrigocalado.com.br/o-que-e-rest-um-resumo-do-assunto-caracteristicas-conceitos-vantagens-e-desva
ntagens-prefiro-dizer-que-e-uma-rapida-introducao-ao-assunto/
https://www.infoq.com/br/articles/rest-soap-when-to-use-each
https://msdn.microsoft.com/pt-br/library/ms233836(v=vs.90).aspx
http://www.devmedia.com.br/web-services-rest-versus-soap/32451
https://www.infoq.com/br/articles/rest-soap-when-to-use-each
http://web.unipar.br/~seinpar/2014/artigos/pos/Cleber_de_F_Ferreira_Roberto_Dias_Mota%20(1).pdf
https://www.slideshare.net/nnja/djangocon-2014-django-rest-framework-so-easy-you-can-learn-it-in-25-minutes
https://www.slideshare.net/MarcelChastain/rest-easy-with-djangorestframework
INSTITUTO FEDERAL DA BAHIA

Contenu connexe

Tendances

Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Joeldson Costa Damasceno
 
PLANO DE NEGÓCIO: Abertura de uma empresa de assistência e venda de equipamen...
PLANO DE NEGÓCIO: Abertura de uma empresa de assistência e venda de equipamen...PLANO DE NEGÓCIO: Abertura de uma empresa de assistência e venda de equipamen...
PLANO DE NEGÓCIO: Abertura de uma empresa de assistência e venda de equipamen...
ProjetoSemeandoaLeitura
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
Christian Perone
 

Tendances (20)

Bases De Dados
Bases De DadosBases De Dados
Bases De Dados
 
Aula03 - Informática Básica
Aula03 - Informática BásicaAula03 - Informática Básica
Aula03 - Informática Básica
 
Psi-mod-15
Psi-mod-15Psi-mod-15
Psi-mod-15
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
 
Aula 01
Aula 01Aula 01
Aula 01
 
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
 
PLANO DE NEGÓCIO: Abertura de uma empresa de assistência e venda de equipamen...
PLANO DE NEGÓCIO: Abertura de uma empresa de assistência e venda de equipamen...PLANO DE NEGÓCIO: Abertura de uma empresa de assistência e venda de equipamen...
PLANO DE NEGÓCIO: Abertura de uma empresa de assistência e venda de equipamen...
 
Curso javascript básico
Curso javascript básicoCurso javascript básico
Curso javascript básico
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Desenvolvimento de aplicações para dispositivos móveis
Desenvolvimento de aplicações para dispositivos móveisDesenvolvimento de aplicações para dispositivos móveis
Desenvolvimento de aplicações para dispositivos móveis
 
Python - Introdução Básica
Python - Introdução BásicaPython - Introdução Básica
Python - Introdução Básica
 
Aula 04.1 - Operações Básicas no uso de microcomputadores- editores de texto...
 Aula 04.1 - Operações Básicas no uso de microcomputadores- editores de texto... Aula 04.1 - Operações Básicas no uso de microcomputadores- editores de texto...
Aula 04.1 - Operações Básicas no uso de microcomputadores- editores de texto...
 
Tomada de decisao - logica
Tomada de decisao - logicaTomada de decisao - logica
Tomada de decisao - logica
 
Aula I - Excel
Aula I - ExcelAula I - Excel
Aula I - Excel
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01Estrutura de Dados - Aula 01
Estrutura de Dados - Aula 01
 
Exercícios de funções
Exercícios de funçõesExercícios de funções
Exercícios de funções
 
Polimorfismo
PolimorfismoPolimorfismo
Polimorfismo
 

Similaire à Desmitificando as aplicações RESTFul usando Django Rest Framework

Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
Igor Sobreira
 

Similaire à Desmitificando as aplicações RESTFul usando Django Rest Framework (20)

Django - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com PythonDjango - Desenvolvimento web ágil com Python
Django - Desenvolvimento web ágil com Python
 
Django
DjangoDjango
Django
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação WebDjango Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
 
Desenvolvimento de uma plataforma de bookmarking social com Django e TDD
Desenvolvimento de uma plataforma de bookmarking social com Django e TDDDesenvolvimento de uma plataforma de bookmarking social com Django e TDD
Desenvolvimento de uma plataforma de bookmarking social com Django e TDD
 
Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018Workshop Django Framework - 30/10/2018
Workshop Django Framework - 30/10/2018
 
Python
PythonPython
Python
 
Spring boot
Spring bootSpring boot
Spring boot
 
F R A M E W O R K D J A N G O
F R A M E W O R K  D J A N G OF R A M E W O R K  D J A N G O
F R A M E W O R K D J A N G O
 
Python e Django
Python e DjangoPython e Django
Python e Django
 
Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018Framework web 01 - Aula UTFPR 2018
Framework web 01 - Aula UTFPR 2018
 
Desenvolvimento web com python e django
Desenvolvimento web com python e djangoDesenvolvimento web com python e django
Desenvolvimento web com python e django
 
Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015Trabalho 4 Semestre e 5 Semestre 2015
Trabalho 4 Semestre e 5 Semestre 2015
 
Web Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciênciaWeb Scraping: aplicações nos negócios e na ciência
Web Scraping: aplicações nos negócios e na ciência
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em pythonJunho 2016 - Django - A sua cápsula de soluções web em python
Junho 2016 - Django - A sua cápsula de soluções web em python
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
TDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direitoTDC 2015 - Rails & Javascript: faça isso direito
TDC 2015 - Rails & Javascript: faça isso direito
 
O que move a web atualmente?
O que move a web atualmente?O que move a web atualmente?
O que move a web atualmente?
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Desenvolvimento Ágil de Aplicações Web com Python e Django
Desenvolvimento Ágil de Aplicações Web com Python e DjangoDesenvolvimento Ágil de Aplicações Web com Python e Django
Desenvolvimento Ágil de Aplicações Web com Python e Django
 

Desmitificando as aplicações RESTFul usando Django Rest Framework

  • 1. Desmistificando as aplicações RESTful usando o Django Rest Bruno Oliveira | Instituto Federal da Bahia
  • 3. O que iremos aprender? INSTITUTO FEDERAL DA BAHIA
  • 4. Agenda ● Django Framework ○ Overview (Breve histórico, estrutura, caracteristicas etc…) ○ Exemplo Básico - primeiros passos ● Entendendo o Estilo Arquitetural REST ○ Principios e Terminologias REST ○ REST x SOAP ○ Verbos HTTP ○ Vantagens x Desvantagens ○ Quando Utilizar e Quando Não Utilizar ● Django REST ○ Exemplo Prático (Clone github) INSTITUTO FEDERAL DA BAHIA
  • 5. Um pouco de história... Guitarrista de jazz Django Reinhardt ● O Django foi criado originalmente para gerenciar publicações jornalísticas do Word Online para a construção de sites interativos em curtos períodos de tempo. (2003) ● ...Os desenvolvedores começaram a extrair um framework de desenvolvimento web genérico capaz de construir aplicações Web cada vez mais rápido. ● Em 2005, após constantes melhorias no framework, o jornal decidiu abrir o código-fonte do software resultante, o Django. INSTITUTO FEDERAL DA BAHIA
  • 6. Quem usa o Django? Entre outros...https://www.shuup.com/en/blog/25-of-the-most-popular-python-and-django-websites/ INSTITUTO FEDERAL DA BAHIA
  • 7. Por que usar o Django? ❖ Framework web ágil ➢ “Nós fazemos a parte repetitiva, você faz o que interessa. ❖ Utiliza o princípio Don’t repeat yourself (DRY) ➢ Apps plugáveis; ❖ Mapeamento objeto-relacional; ➢ INSTITUTO FEDERAL DA BAHIA
  • 8. Por que usar o Django? ❖ Urls elegantes; ➢ Url sem padrão inteligível: “ME2/Sites/dirmod.asp?sid=&type=gen&mod=Core+Pages&gid=A6CD4967199A42D9B65B1B” No Django: /newsarchive/<year>/<month>/. ❖ Interface administrativa automática que inclui sistema de autenticação e gerenciamento de permissões; ➢ INSTITUTO FEDERAL DA BAHIA
  • 9. E muito mais... ❖ Conjunto de middlewares voltados para segurança INSTITUTO FEDERAL DA BAHIA ❖ Geodjango
  • 10. E muito mais... ● Geração automática de formulários; ● Sistema de templates flexível; ● Sistema de cache; ● Geodjango framework; ● Internacionalização ● Comunidade ativa. INSTITUTO FEDERAL DA BAHIA
  • 11. MVC vs MTV MVC Model View Controller MTV Model Template View “Se você está faminto por acrônimos, você deve dizer que Django é um framework MTV” “No final do dia, é claro, tudo se resume a conseguir fazer coisas. Independentemente de como as coisas são nomeadas, Django as executa da forma que é mais lógica para nós.” INSTITUTO FEDERAL DA BAHIA
  • 14. ● Criando e ativando um ambiente virtual: ○ Criar diretório: mkdir <<nomedapasta>> ○ Criar um ambiente virtual dentro da pasta: python3 -m venv <<myvenv>> ○ Ativar o ambiente: source myvenv/bin/activate ● Instalando o Django Framework: ○ pip install django Configurando o ambiente INSTITUTO FEDERAL DA BAHIA
  • 15. ● Criando projeto: ○ django-admin startproject <<nomeprojeto>> ● Criando app: ○ Acesse o diretório que tem o <<nomedoprojeto>> ○ Crie um app: python manage.py startapp <<app>> ○ Execute o comando migrate para gerar a interface administrativa automaticamente: python manage.py migrate Criando projeto e aplicação INSTITUTO FEDERAL DA BAHIA
  • 16. ● Crie um super usuário e inicie o servidor: ○ python manage.py createsuperuser ○ python manage.py runserver ● Acesse 127.0.0.1:8000. Criando projeto e aplicação INSTITUTO FEDERAL DA BAHIA
  • 17. ● Interface administrativa Criando projeto e aplicação INSTITUTO FEDERAL DA BAHIA
  • 18. ● Instale o app criado em settings.py Criando projeto e aplicação INSTITUTO FEDERAL DA BAHIA
  • 19. Estrutura do projeto Django INSTITUTO FEDERAL DA BAHIA
  • 20. Modelos ● Um modelo define a estrutura dos objetos da aplicação. Ele contém os campos e comportamentos essenciais dos dados que você está armazenando; ● Cada modelo é uma classe Python que herda django.db.models.Model; ● Cada atributo de um modelo representa um campo no banco de dados. Exemplo: INSTITUTO FEDERAL DA BAHIA
  • 21. View ● Uma função do tipo view é uma função em python que recebe uma requisição (request) e retorna uma resposta (response). ● Essa resposta pode ser o conteúdo HTML de uma página web, um redirecionamento, uma imagem… ● A própria função view contém toda a lógica necessária para consultar os dados através do model e retornar uma resposta. ● Por convenção, essas funções do tipo view ficam em um arquivo chamado views.py Exemplo: INSTITUTO FEDERAL DA BAHIA
  • 22. Urls ● Um esquema de URL elegante e limpo, é um detalhes importante em uma aplicação Web! ● No Django, nós usamos algo chamado URLconf (configuração de URL), que é um conjunto de padrões que Django vai tentar coincidir com a URL recebida para encontrar a visão correta. (Expressões regulares simples) Exemplo: INSTITUTO FEDERAL DA BAHIA
  • 23. QuerySets ● Uma vez que tenha criado seu modelos de dados, o Django automaticamente fornece uma API de abstração do banco de dados que permite a criação,consulta, edição e deleção objetos. Exemplos: >>> from administracao.models import Livro >>> livro = Livro(titulo='Sistemas Operacionais Modernos', autor='Andrew S. Tanenbaum', edicao=2, ....) >>> livro.save() #Cria novo registro >>> livros = Livro.objects.all() #Busca todos os objetos Livro no banco de dados >>> first_livro = Livro.objects.get(pk=1) #Retorna o primeiro livro cadastrado >>> first_livro = Livro.objects.get(pk=1) >>> first_livro.delete() #deleta o livro de pk 1 INSTITUTO FEDERAL DA BAHIA
  • 24. Formulários ● No Django, os formulários podem ser criados “do zero”, isto é, a partir da especificação de cada tipo de dado para um modelo ● Ou, usando modelform (recomendado) Exemplo: INSTITUTO FEDERAL DA BAHIA
  • 25. Templates ● A linguagem de templates do django é formada por tags e filtros; ● O conceito de herança de templates permite reaproveitar trechos de outros templates seguindo a mesma lógica da herança em POO; {% extends admin/base.html' %} ● As tags (com comandos) devem estar entre as marcações {% %} e os dados {{ dados }} Exemplo: INSTITUTO FEDERAL DA BAHIA
  • 26. Não acaba por aqui... Django - Documentação Oficial: https://docs.djangoproject.com/en/1.10/ INSTITUTO FEDERAL DA BAHIA Django Girls - Tutorial em Português: https://tutorial.djangogirls.org/pt/
  • 28. O problema... INSTITUTO FEDERAL DA BAHIA Como integrar sistemas de tecnologias e/ou plataformas diferentes? Solução Prática 1: Banco de Dados Compartilhado Sistema B Sistema A Solução Prática 2: Transferência de Arquivos Solução Prática 3: Web Service Rede
  • 29. Um pouco de história... SOAP (Simple Object Access Protocol) ❏ Protocolo maduro e com especificação completa ❏ Utiliza XML como formato padrão ❏ Os “envelopes” SOAP são transmitidos via HTTP (POST) ❏ O “envelope” descreverá o serviço e parâmetros da requisição ao servidor ❏ O servidor executa RPC INSTITUTO FEDERAL DA BAHIA ServicosDePedido +obterPedidos( ) +enviarPedido( ) +obterDetalhesPedido( ) +atualizarPedido( ) +cancelarPedido( ) RPCXML Foco nas operações
  • 30. O Estilo Arquitetural REST REST (Representational State Transfer) ❏ “Um estilo arquitetural para sistemas de hipermídia distribuídos” ❏ Ex: a própria WEB! INSTITUTO FEDERAL DA BAHIA Mas... como o servidor vai saber qual serviço deve realizar? Através dos métodos do protocolo HTTP!
  • 31. Métodos HTTP ● Verbos HTTP - Operações: ○ GET – recupera a representação de um recurso. ○ POST – adiciona informações usando o recurso da URI passada. Pode adicionar informações a um recurso existente ou criar um novo. ○ PUT – Atualiza um recurso na URI especificada. ○ DELETE – remove o recurso representado pela URI passada. INSTITUTO FEDERAL DA BAHIA
  • 32. O que muda na prática? INSTITUTO FEDERAL DA BAHIA Interface Específica Interface Uniforme INVOKE (Post) GET PUT POST DELETE Cliente Cliente Recurso ConsultarCliente () Agora o foco são os recursos! INVOKE (Post) INVOKE (Post) INVOKE (Post) CadastrarCliente () ExcluirCliente () AtualizarCliente ()
  • 33. E se algo der errado? ● Código de Status HTTP: ○ 100 - Continue ○ 200 - OK ○ 201 - Created ○ 204 - No Content ○ 304 - Not Modified ○ 400 - Bad Request ○ 401 - Unauthorized ○ 404 - Not Found ○ 405 - Method Not Allowed ○ 500 - Internal Server Error ○ ...e muitos outros https://httpstatuses.com/ ○ INSTITUTO FEDERAL DA BAHIA
  • 34. Qual das abordagens é a melhor? INSTITUTO FEDERAL DA BAHIA
  • 35. Depende... Ambos possuem vantagens e desvantagens! A melhor abordagem a ser utilizada depende dos requisitos do software. INSTITUTO FEDERAL DA BAHIA Escalabilidade Segurança Performance Facil Implementação Representação Transporte
  • 36. Principios e Terminologias do REST ❖ Recursos ➢ Qualquer coisa considerada relevante para sua aplicação ■ Ex: Relatórios, Fotos, Vídeos, Recibos, Produtos, Automóveis, Lista de Buracos nas ruas de Salvador…. ■ TUDO é um RECURSO ❖ “Um recurso é um objeto ou serviço que pode ser identificado através de uma URI” INSTITUTO FEDERAL DA BAHIA
  • 37. Principios e Terminologias do REST ❖ Identificação do Recurso(Addressability): ➢ Os recursos serão identificados através de uma URL que permitirá a localização e realização de operações sobre ele. INSTITUTO FEDERAL DA BAHIA ❖ Interface Uniforme ➢ As operações são baseadas no protocolo HTTP (GET, POST, PUT, DELETE)
  • 38. Principios e Terminologias do REST ❖ Comunicação sem estado (Stateless) ➢ O servidor não manterá histórico de requisições! ➢ Dados relativos ao cliente (estado da aplicação) devem ser mantidos no próprio cliente ➢ Dados relativos ao recurso devem ser mantidos no servidor. INSTITUTO FEDERAL DA BAHIA ❖ Cache (Cacheable) ➢ O uso de Cache no cliente auxilia no economia de processamento a partir do armazenamento dos resultados das requisições ➢ Obs: dada a sua complexidade, este tópico não será abordado nesse minicurso.
  • 39. Principios e Terminologias do REST ❖ Representações ➢ “Os recursos são dissociados de suas representações para que seu conteúdo possa ser acessado em uma variedade de formatos…” ➢ Ao receber uma requisição, o servidor deverá enviar uma resposta contendo um documento (que pode ser uma página HTML, arquivo TXT, XML, JSON, XHTML…). INSTITUTO FEDERAL DA BAHIA
  • 40. Estilo Arquitetural REST Principais vantagens : ● Protocolo de transferência maduro e amplamente utilizado (HTTP) ● Escalabilidade e Alta Performance ● Uso da infraestrutura da Web a favor da aplicação ● “Facil” Implementação ● Flexibilidade de representação de recursos em diferentes formatos ● Pode ser adotado por praticamente qualquer Cliente que suporte HTTP/HTTPS (Interoperabilidade) INSTITUTO FEDERAL DA BAHIA
  • 41. Mas...seria o REST a solução de todos os problemas? INSTITUTO FEDERAL DA BAHIA
  • 42. Não! INSTITUTO FEDERAL DA BAHIA Embora o REST proporcione vantagens bastante atrativas, a escolha de utilizá-lo deverá levar em conta os requisitos do software!
  • 43. Quando utilizar e quando não utilizar Quando Utilizar: ● Além de todos os casos anteriormente citados: ○ Quando há limitação de recursos ou de largura de banda; ○ Quando a natureza da aplicação permite o uso de cache; ○ Operações não precisam ser continuadas (stateless); INSTITUTO FEDERAL DA BAHIA Quando Não Utilizar: ● Quando o sistema realiza processamento de chamada assíncronos; ● For necessário utilizar outro protocolo de transporte; ● Quando há necessidade de estabelecer contratos formais entre o cliente e o servidor. ● E, obviamente, quando o serviço for stateful.
  • 45. O que é o DRF? ● É um conjunto de ferramentas construídas a partir do Django, que facilitam a construção de API’s REST. ● Essa apresentação terá foco no funcionamento básico do serviço REST do framework. Entretanto, existem váaaaarias configurações avançadas que devem ser consultadas através da documentação do Django REST Framework (http://www.django-rest-framework.org/) INSTITUTO FEDERAL DA BAHIA
  • 46. Instalação ● Instale o pacote DRF: ○ pip install djangorestframework ● Registre a aplicação: INSTALLED_APPS = ( ... 'rest_framework', ) INSTITUTO FEDERAL DA BAHIA
  • 47. Serializers ● A serialização de objetos tem como finalidade principal salvar o estado de um objeto para ser capaz de recriá-lo quando necessário. ● Existem diversas formas de serializar objetos no Django Rest Framework. Neste tutorial, usaremos apenas JSON. ● ModelSerializers utiliza um model como meta class para serializar objetos. Exemplo: INSTITUTO FEDERAL DA BAHIA
  • 48. Requisições e Respostas ● APIVIEW: ○ As funções do tipo view, definidas em views.py, herdam da classe genérica APIVIEW. ○ Os métodos da classe tratam os principais verbos do protocolo HTTP (POST,GET,PUT,DELETE) Exemplo: INSTITUTO FEDERAL DA BAHIA
  • 49. URL ● Agora que ja temos uma APIVIEW criada, devemos definir uma URL associada a ela: Exemplo: INSTITUTO FEDERAL DA BAHIA
  • 51. Essa é só a ponta do Iceberg INSTITUTO FEDERAL DA BAHIA O Django REST Framework possui configurações mais avançadas que não foram abordadas nesse minicurso Dica de estudo: ● Mecanismos de autenticação e permissão ● Estudo de outras Views (Aqui usamos apenas APIVIEW) ● Utilizar outras representações além do JSON ● Relacionamentos e rotas
  • 54. Referências https://docs.djangoproject.com/en/1.10/ http://www.slideshare.net/fernandogrd/arquivo-27975959 http://pt.slideshare.net/osantana/curso-de-python-e-django https://tutorial.djangogirls.org/pt/ http://www.django-rest-framework.org/ http://imasters.com.br/desenvolvimento/definicao-restricoes-e-beneficios-modelo-de-arquitetura-rest/?trace=15190 21197&source=single http://www.rodrigocalado.com.br/o-que-e-rest-um-resumo-do-assunto-caracteristicas-conceitos-vantagens-e-desva ntagens-prefiro-dizer-que-e-uma-rapida-introducao-ao-assunto/ https://www.infoq.com/br/articles/rest-soap-when-to-use-each https://msdn.microsoft.com/pt-br/library/ms233836(v=vs.90).aspx http://www.devmedia.com.br/web-services-rest-versus-soap/32451 https://www.infoq.com/br/articles/rest-soap-when-to-use-each http://web.unipar.br/~seinpar/2014/artigos/pos/Cleber_de_F_Ferreira_Roberto_Dias_Mota%20(1).pdf https://www.slideshare.net/nnja/djangocon-2014-django-rest-framework-so-easy-you-can-learn-it-in-25-minutes https://www.slideshare.net/MarcelChastain/rest-easy-with-djangorestframework INSTITUTO FEDERAL DA BAHIA