Uma API REST desenvolvida em Django que fornece serviços backend para uma plataforma de compartilhamento de fotos de cachorros. O projeto permite autenticação de usuários, upload de fotos e interação através de comentários.
- Implementação de autenticação JWT com tokens de acesso e refresh
- Gerenciamento eficiente de upload e armazenamento de arquivos de mídia
- Sistema de paginação customizado para otimizar performance
- Controle de permissões baseado em usuário para operações CRUD
- Configuração de CORS para integração com frontend
- Arquitetura de APIs RESTful com Django REST Framework
- Implementação de autenticação stateless com JWT
- Manipulação de arquivos de mídia em Django
- Serializers e ViewSets para criar endpoints eficientes
- Configuração de permissões e controle de acesso
- Autenticação baseada em tokens JWT
- Token de acesso com validade de 1 dia
- Token de refresh com validade de 7 dias
- Endpoints de login e renovação de token
- Sistema seguro e stateless
- Upload de fotos com armazenamento em sistema de arquivos
- Paginação customizada (15 itens por página)
- Controle de acesso baseado em permissões
- Listagem e detalhamento de fotos
- Metadados de fotos (autor, data, descrição)
- Adição de comentários em fotos
- Recursos de gerenciamento de comentários
- Associação de comentários com usuários e fotos
- API RESTful completa para operações CRUD
O projeto está estruturado em apps modulares seguindo o padrão MVT (Model-View-Template) do Django:
authentication
App responsável pelo gerenciamento de autenticação de usuários utilizando JWT (JSON Web Tokens). Implementa endpoints de login, logout e refresh de tokens, garantindo segurança através de tokens de curta duração para acesso e tokens de longa duração para renovação.
photo
Gerencia todas as operações relacionadas a fotos, incluindo upload, listagem, detalhamento e exclusão. Utiliza o sistema de arquivos de mídia do Django para armazenar imagens de forma eficiente e implementa paginação customizada para otimizar o carregamento de grandes volumes de dados.
comment
Implementa a funcionalidade completa de comentários, permitindo que usuários interajam com as fotos publicadas. Utiliza relacionamentos ForeignKey com os models de Photo e User para manter integridade referencial.
Django REST Framework
Framework escolhido por sua robustez na criação de APIs RESTful. Oferece serializers para validação de dados, ViewSets para lógica de negócio organizada e sistema de roteamento automático de URLs.
JWT Authentication
Implementado através do djangorestframework-simplejwt, fornece autenticação stateless ideal para aplicações modernas. Tokens são armazenados no cliente e validados a cada requisição, eliminando necessidade de sessões no servidor.
CORS Configuration
Configuração de Cross-Origin Resource Sharing através do django-cors-headers, permitindo que o frontend React consuma a API de domínios diferentes durante desenvolvimento e produção.
Media Storage
Sistema de arquivos configurado para gerenciar upload e armazenamento de imagens. Utiliza a biblioteca Pillow para processamento de imagens e validação de formatos.
Django 5.2.4
Framework web Python de alto nível que promove desenvolvimento rápido e design limpo. Escolhido por sua arquitetura MVT robusta, ORM poderoso e grande ecossistema de pacotes.
Django REST Framework 3.16.0
Toolkit poderoso e flexível para construir APIs Web. Oferece serialização de dados, autenticação, paginação e um sistema de permissões completo out-of-the-box.
Simple JWT
Biblioteca para implementar autenticação JWT no Django REST Framework. Fornece tokens de acesso e refresh, com configurações flexíveis de tempo de expiração.
django-cors-headers
Middleware Django para manipular cabeçalhos CORS (Cross-Origin Resource Sharing), essencial para permitir que aplicações frontend consumam a API.
Pillow
Biblioteca Python para processamento de imagens, utilizada para validar e manipular arquivos de imagem durante o upload.
SQLite
Banco de dados relacional leve e embutido, ideal para desenvolvimento e projetos de pequeno a médio porte. Não requer configuração de servidor separado.
- Python 3.x instalado
- pip (gerenciador de pacotes Python)
- Git
- Clone o repositório
git clone <url-do-repositório>
cd dogs-django-api- Crie e ative um ambiente virtual
# Linux/Mac
python -m venv venv
source venv/bin/activate
# Windows
python -m venv venv
venv\Scripts\activate- Instale as dependências
pip install -r requirements.txt- Execute as migrações do banco de dados
python manage.py migrate- (Opcional) Crie um superusuário para acessar o admin
python manage.py createsuperuser- Inicie o servidor de desenvolvimento
python manage.py runserver- Acesse a API em
http://localhost:8000/api/v1/
POST /api/v1/auth/login/- Login de usuárioPOST /api/v1/auth/refresh/- Renovar token de acessoPOST /api/v1/auth/register/- Registrar novo usuário
GET /api/v1/photos/- Listar fotos (paginado)POST /api/v1/photos/- Upload de nova fotoGET /api/v1/photos/{id}/- Detalhes de uma fotoPUT /api/v1/photos/{id}/- Atualizar fotoDELETE /api/v1/photos/{id}/- Deletar foto
GET /api/v1/comments/- Listar comentáriosPOST /api/v1/comments/- Criar novo comentárioGET /api/v1/comments/{id}/- Detalhes de um comentárioPUT /api/v1/comments/{id}/- Atualizar comentárioDELETE /api/v1/comments/{id}/- Deletar comentário
GET /api/v1/admin/- Interface administrativa do Django