Salve salve Pythonista!
No desenvolvimento moderno de aplicações web, a criação de APIs RESTful é uma habilidade essencial.
O Django Rest Framework (DRF) é uma poderosa ferramenta que facilita e agiliza esse processo.
Neste artigo, vamos explorar o que é o Django Rest Framework, como ele simplifica o desenvolvimento de APIs REST, as principais funcionalidades que ele oferece e como ele pode aumentar significativamente a eficiência e a robustez do desenvolvimento de aplicações Web RESTful em Python.
Ah, e esse artigo dá o start em uma sequência incrível de artigos sobre essa importante e requisitada ferramenta!
Então fica ligado e não perca os próximos artigos! ![]()
Vá Direto ao Assunto…
- Mas primeiro…
- O que é o Django Rest Framework?
- Como o Django Rest Framework facilita o desenvolvimento de APIs REST
Mas primeiro…
O Django REST Framework utiliza - como o próprio nome sugere - o nosso querido Django como base!
Por isso é interessante que você já possua certo conhecimento na construção de aplicações web utilizando o Django.
Ainda não é craque em Django?
Não tem problema, aqui na Python Academy você conta com o melhor material sobre essa importante ferramenta!
Acesse agora:
Django: Introdução ao framework
Django: A Camada Model
Django: A Camada View
Django: A Camada Template
Ou se preferir, baixe nosso ebook GRÁTIS de Desenvolvimento Web com Python e Django:
Ebook GRÁTIS
DESENVOLVIMENTO WEB COM PYTHON E DJANGO
Conteúdo:
-
Veja como modelar sua aplicação -
Utilize a robusta API de Acesso a Dados do Django -
Aprenda sobre Class Based Views
-
Construa Middlewares próprios -
Desenvolva filtros e tags customizados para criar lindos templates
Sem mais delongas, vamos para o Django REST Framework, ou DRF para os íntimos.
O que é o Django Rest Framework?
O Django Rest Framework (DRF) é uma biblioteca de alta performance, flexível e robusta para criar APIs RESTful usando Django.
Ele fornece um kit de ferramentas de ponta para criar APIs, oferecendo uma série de vantagens como autenticação, permissões, serialização e muito mais.
A integração com Django é perfeita, tornando-o ideal para desenvolvedores que já estão familiarizados com o ecossistema Django.
Como o Django Rest Framework facilita o desenvolvimento de APIs REST
Vamos ver algumas das várias vantagens de se utiliar o DRF para construção de APIs Rest:
Serialização de Dados
A serialização é um conceito crucial ao trabalhar com APIs.
Ela permite converter complexos tipos de dados do Django para formatos JSON, XML, etc., e vice-versa.
O DRF facilita essa tarefa com suas poderosas classes de serialização.
Veja como é fácil criar uma classe de Serialização para converter um Model do Django - chamado de Livro - e seus campos: titulo, autor, isbn e publicacao:
1
2
3
4
5
6
7
from rest_framework import serializers
from .models import Livro
class LivroSerializer(serializers.ModelSerializer):
class Meta:
model = Livro
fields = ['titulo', 'autor', 'isbn', 'publicacao']
Views Genéricas Baseadas em Classes
O DRF oferece um conjunto de Views Genéricas que simplificam a criação de operações CRUD.
Usar essas views genéricas economiza muito tempo e reduz a complexidade do código:
1
2
3
4
5
6
7
from rest_framework import generics
from .models import Livro
from .serializers import LivroSerializer
class LivroListCreateView(generics.ListCreateAPIView):
queryset = Livro.objects.all()
serializer_class = LivroSerializer
No exemplo acima, é utilizada a generics.ListCreateAPIView para criar uma View que vai possibilitar a Listagem de Livros (o Retrieve do CRUD) e a Criação de Livros (o Create do CRUD).
Nenhum código adicional é necessário! Essa é a mágica!
Autenticação e Permissões
Outra área onde o DRF brilha é na autenticação e controle de permissões.
Ele oferece diversos métodos de autenticação e uma infraestrutura fácil de usar para definir permissões que controlam o acesso às diferentes partes da API.
Vamos a um exemplo:
1
2
3
4
5
6
7
8
9
from rest_framework.permissions import IsAuthenticated
from rest_framework.decorators import api_view, permission_classes
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def lista_livros(request):
livros = Livro.objects.all()
serializer = LivroSerializer(livros, many=True)
return Response(serializer.data)
Explicações:
- Nesse código é utilizado o decorator
@api_viewdefinindo que a View só permite o métodoHTTP GET. - O decorator
@permission_classesdefine os tipos permitidos de autenticação para essa View.IsAuthenticateddefine que essa View só estará disponível para usuários já autenticados no sistema. -
def lista_livrosdefine uma Function Based View que irá buscar todos os registros de Livros (comLivro.objects.all()), serializá-los (comLivroSerializer(livros, many=True)) e formula uma Resposta HTTP com os dados serializados (emResponse(serializer.data)).
Além de oferecer suporte a diversos mecanismos de autenticação como token-based authentication, session-based authentication, OAuth, entre outros.
Está curtindo esse conteúdo? ![]()
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
Browsable API
Uma das funcionalidades mais incríveis do DRF é sua Interface Navegável (do inglês Browsable API), que permite testar e interagir com sua API diretamente pelo navegador, tornando o desenvolvimento e o debug muito mais simples.
Nela você pode:
- Acessar os dados cadastrados;
- Testar sua API, realizando chamadas HTTP pelo próprio browser;
- Possui autenticação e autorização integrados;
- Possui uma ótima e amigável interface.
Por exemplo, a seguinte imagem é um exemplo dessa interface:

E também:

E isso tudo sem desenvolver uma linha sequer de código HTML, CSS ou Javascript!
Incrível não é mesmo?!
Filtragem e Paginação
O DRF facilita a filtragem e paginação dos dados, o que é essencial para a performance e experiência do usuário em APIs que lidam com grandes volumes de dados.
Veja como é simples adicionar, por exemplo, a paginação à respostas de sua API:
1
2
3
4
5
6
7
8
9
from rest_framework.pagination import PageNumberPagination
class LivroPagination(PageNumberPagination):
page_size = 10
class LivroListView(generics.ListAPIView):
queryset = Livro.objects.all()
serializer_class = LivroSerializer
pagination_class = LivroPagination
Apenas herdando de PageNumberPagination e configurando page_size você já é capaz de adicionar paginação à sua API!
Ei, você aí! Quer se sentir realmente capaz ao desenvolver Aplicações Web com Django? Então clique no link abaixo e dê o próximo passo agora mesmo!
Throttling
O throttling limita a taxa de pedidos a uma API, prevenindo abuso e evitando sobrecarregar o servidor.
Muito importante para proteger sua aplicação e evitar que seu servidor seja “derrubado” por algum cliente que esteja tentando acessar sua API mais do que o esperado.
Testes Integrados
O DRF também fornece ferramentas para facilitar os testes, como APITestCase, que estende as funcionalidades do Django TestCase.
1
2
3
4
5
6
from rest_framework.test import APITestCase
class LivroAPITests(APITestCase):
def test_lista_livros(self):
response = self.client.get('/api/livros/')
self.assertEqual(response.status_code, 200)
Dessa forma, criar testes se torna uma tarefa simples!
Documentação Integrada
O DRF possui diversas ferramentas para geração automática de documentação da sua API.
Ao integrar com ferramentas como Swagger ou CoreAPI, o DRF permite gerar documentação automática e interativa com pouco trabalho adicional.
Conclusão
Neste artigo, exploramos o que é o Django Rest Framework e como ele facilita o desenvolvimento de APIs RESTful.
Também vimos algumas de suas principais funcionalidades, como serialização, autenticação, permissões e roteamento automatizado.
O uso do DRF pode transformar a maneira como você desenvolve APIs, tornando o processo mais rápido e eficiente.
Se você trabalha com Django e precisa criar APIs robustas e escaláveis, o Django Rest Framework é uma ferramenta indispensável.
Fique ligado nos próximos artigos, vamos aprender muito mais sobre cada característica que vimos aqui!
Até lá, dev.
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6