SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Semelhante a Desmitificando as aplicações RESTFul usando Django Rest Framework (20)

PDF
Desenvolvimento web com python e django
Igor Sobreira
 
PDF
API REST com Django Rest Famework
Jéssica Paz
 
PDF
Django: desenvolvendo aplicações web de maneira simples e rápida!
Felipe Queiroz
 
PDF
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
antonio sérgio nogueira
 
PPTX
Rest workshop
Diogo Gomes
 
PPT
F R A M E W O R K D J A N G O
fabio.thomaz
 
PDF
Django: um framework web para perfeccionistas com prazo
Bernardo Fontes
 
PDF
O que move a web atualmente?
Fabio Janiszevski
 
PDF
Junho 2016 - Django - A sua cápsula de soluções web em python
Grupo de Testes Carioca
 
PDF
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
ODP
Entendendo Frameworks web com Python
Luiz Aldabalde
 
ODP
Entendendo Framework Web com Python
PythOnRio
 
PDF
Desenvolvimento Ágil de Aplicações Web com Python e Django
Matheus Pereira
 
PDF
PyData - Consumindo e publicando web APIs com Python
Bruno Rocha
 
PPTX
Desbravando o REST com Python
Matheus Fidelis
 
PDF
Django Básico
Joffily Ferreira
 
PPSX
Conhecendo o Django
Marcos Thomaz
 
PDF
Modulo python Configurando o Django ebac.pdf
varellacoreldraw
 
PDF
compreensão geral para estruturar uma api
dsfabiano451
 
ODP
Django - Lightning Talk - We Web Conf
Julio Cesar Eiras Melanda
 
Desenvolvimento web com python e django
Igor Sobreira
 
API REST com Django Rest Famework
Jéssica Paz
 
Django: desenvolvendo aplicações web de maneira simples e rápida!
Felipe Queiroz
 
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
antonio sérgio nogueira
 
Rest workshop
Diogo Gomes
 
F R A M E W O R K D J A N G O
fabio.thomaz
 
Django: um framework web para perfeccionistas com prazo
Bernardo Fontes
 
O que move a web atualmente?
Fabio Janiszevski
 
Junho 2016 - Django - A sua cápsula de soluções web em python
Grupo de Testes Carioca
 
Django - A sua cápsula de soluções web em python
Paula Grangeiro
 
Entendendo Frameworks web com Python
Luiz Aldabalde
 
Entendendo Framework Web com Python
PythOnRio
 
Desenvolvimento Ágil de Aplicações Web com Python e Django
Matheus Pereira
 
PyData - Consumindo e publicando web APIs com Python
Bruno Rocha
 
Desbravando o REST com Python
Matheus Fidelis
 
Django Básico
Joffily Ferreira
 
Conhecendo o Django
Marcos Thomaz
 
Modulo python Configurando o Django ebac.pdf
varellacoreldraw
 
compreensão geral para estruturar uma api
dsfabiano451
 
Django - Lightning Talk - We Web Conf
Julio Cesar Eiras Melanda
 

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