2025 e você ainda não sabe como o DRF trabalha uma requisição 👇🏼
Fluxo de uma requisição GET {url}/api/produtos/123/
-
Navegador → Router
Você digita
{url}/api/produtos/123/
(método GET). -
Router
Intercepta a URL e detecta o pattern, despachando para
ProductViewSet
. -
ViewSet (
ProductViewSet
)retrieve()
é acionado (GET
+id
).Busca o objeto, checa permissões, invoca o serializer.
-
Serializer (
ProductSerializer
)Converte Product → dicionário Python → JSON.
Para
POST
/PUT
, o fluxo se inverte (valida → salva).
Por que isso importa?
-
Produtividade – ~90 % menos código repetitivo.
-
Consistência REST – mesmos verbs e status codes.
Exemplo mínimo
# urls.py
router.register(r"produtos", ProductViewSet)
# views.py
class ProductViewSet(ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
# serializers.py
class ProductSerializer(ModelSerializer):
class Meta:
model = Product
fields = ("id", "nome", "preco", "estoque")
3 arquivos, 15 linhas — CRUD completo 😉