API para busca e gerenciamento de filmes e posts de blog.
- Estrutura do Projeto
- Configuração
- Executando o Projeto
- Documentação da API
- Desenvolvimento
- Contribuindo
- Licença
O projeto está hospedado na seguinte infraestrutura:
- Backend: Aplicação Flask hospedada no Heroku
- Armazenamento de Imagens: Amazon S3 para armazenamento de imagens dos posts
- Banco de Dados: MongoDB Atlas para persistĂŞncia dos dados
movie-search-blog-backend/
├── app.py # Aplicação principal
├── config.py # Configurações (MongoDB, AWS, etc)
├── requirements.txt # Dependências do projeto
├── favorites/ # Módulo de filmes favoritos
│ ├── init.py
│ ├── controller.py # Lógica de negócios
│ ├── models.py # Modelos Swagger
│ └── routes.py # Rotas da API
└── blogposts/ # Módulo de posts do blog
├── init.py
├── controller.py # Lógica de negócios
├── models.py # Modelos Swagger
└── routes.py # Rotas da API
A documentação Swagger está disponĂvel em http://localhost:5000/docs
- Desenvolvimento: http://localhost:5000
- Produção: https://seu-app.herokuapp.com
- POST /api/favorites/search - Exibe todos os filmes favoritos
- POST /api/blogposts/search - Exibe todos os posts do blog
- GET /api/blogposts/tconst - Exibe um post especĂfico
- GET /api/images/tconst - Exibe todas as imagens de um filme
- POST /api/images/tconst/filename - Exibe uma imagem especĂfica de um filme
python -m venv venv
source venv/bin/activate
venv\Scripts\activate
pip install -r requirements.txt
Crie um arquivo .env
na raiz do projeto e defina as seguintes variáveis:
-
MongoDB:
MONGODB_CONNECTION_STRING
: String de conexĂŁo com o MongoDB.MONGODB_DATABASE
: Nome do banco de dados MongoDB.
-
AWS S3:
AWS_ACCESS_KEY_ID
: ID da chave de acesso da AWS.AWS_SECRET_ACCESS_KEY
: Chave de acesso secreta da AWS.BUCKET_NAME
: Nome do bucket S3.
Exemplo de arquivo .env
:
MONGODB_CONNECTION_STRING="mongodb+srv://<username>:<password>@cluster0.mongodb.net/"
MONGODB_DATABASE="movie-search"
AWS_ACCESS_KEY_ID="your-access-key-id"
AWS_SECRET_ACCESS_KEY="your-secret-access-key"
BUCKET_NAME="your-bucket-name"
python app.py
Cada mĂłdulo (favorites e blogposts) segue a mesma estrutura:
- models.py: Define os modelos Swagger para documentação da API
- routes.py: Define as rotas e endpoints da API
- controller.py: Contém a lógica de negócios e interação com o banco de dados
- Flask: Framework web
- Flask-RESTX: Extensão para APIs RESTful e documentação Swagger
- PyMongo: Driver MongoDB
- Boto3: SDK AWS para Python
- Python-dotenv: Gerenciamento de variáveis de ambiente