Introdução ao Django REST¶
Uma extensão do aplicativo Django inicial para incluir uma API RESTful usando Django REST Framework, mantendo a funcionalidade existente e adicionando endpoints API.
1. Instalação e Configuração Inicial¶
Primeiro, vamos instalar e configurar o DRF:
Adicione ao INSTALLED_APPS em project/settings.py:
2. Criação dos Serializers¶
Crie um arquivo serializers.py na aplicação app:
# app/serializers.py
from rest_framework import serializers
from app.models import Produto
class ProdutoSerializer(serializers.ModelSerializer):
class Meta:
model = Produto
fields = ['id', 'nome', 'preco', 'descricao', 'disponivel']
read_only_fields = ['id']
3. Criação das Viewsets e API Views¶
Atualize ou crie um arquivo api.py na aplicação:
# app/api.py
from rest_framework import viewsets, generics
from rest_framework.response import Response
from rest_framework.decorators import action
from app.models import Produto
from app.serializers import ProdutoSerializer
class ProdutoViewSet(viewsets.ModelViewSet):
queryset = Produto.objects.all()
serializer_class = ProdutoSerializer
4. Configuração das URLs da API¶
Crie um arquivo api_urls.py na aplicação:
# app/api_urls.py
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from app.api import ProdutoViewSet
router = DefaultRouter()
router.register(r'produtos', ProdutoViewSet, basename='produto')
urlpatterns = [
path('', include(router.urls)),
]
Atualize o urls.py principal do projeto:
# project/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('app.urls')), # URLs tradicionais
path('api/', include('app.api_urls')), # URLs da API
]
5. Testando a API¶
Agora você pode testar os endpoints da API:
- Listar todos os produtos:
GET /api/produtos/ - Criar novo produto:
POST /api/produtos/ - Detalhes de um produto:
GET /api/produtos/1/ - Atualizar produto:
PUT /api/produtos/1/ - Produtos disponíveis:
GET /api/produtos/disponiveis/ - Produtos baratos:
GET /api/produtos/baratos/ - Documentação Swagger:
GET /swagger/ - Documentação ReDoc:
GET /redoc/
Esta extensão transforma seu aplicativo Django em uma API RESTful poderosa enquanto mantém a funcionalidade web tradicional. Você agora pode:
- Consumir a API com frontends modernos (React, Vue, Angular)
- Oferecer serviços para aplicativos móveis
- Integrar com outros sistemas via API
- Manter uma arquitetura escalável e bem organizada