- Python - Linguagem de Programação
- Flask - Biblioteca básica de roteamento
- Flask-Restx - Biblioteca que auxilia na construção de API Rest
- SQLAlchemy - ORM
- Flask-Marshmallow - Biblioteca de serialization/deserialization de Objeto
- Docker - Container para aplicação
- Docker-Compose - Levantamento dos Containers
- Pipenv - Gerenciador de dependências
- Postgresql - Banco de dados
- Celery - Fila de tarefas e tabalhos em background
- RabbitMQ - Broker de mensageria
- Flake8 - Guia de estiloPep8
- Black - O formatador de código descompromissado[Pep8]
- Pre-commit - É um gerenciador de pacotes multi-idioma para pre-commit hooks
- SMTPLIB - O módulo smtplib define um objeto de sessão de cliente SMTP que pode ser usado para enviar e-mail
O projeto necessita de docker e docker-compose
Clone esse projeto em sua máquina:
$ git clone https://github.com/Mario-Guilherme/desafio-backend-python.gitCertifique-se que a porta 5000(Flask), 15672(Rabbitmq), 5672(Rabbitmq), 5432(Postgresql), 8080(adminer)
Certificado que as portas acima estão livre,
Entre na pasta do projeto usando o comando:
$ cd desafio-backend-pythondigite o comando em seu terminal para subir os containers do terminal.
$ docker-compose up --buildNo seu Browser acesse : http://localhost:5000/
Método POST http://localhost:5000/file-obras/
{"email":"seu email"}Método GET (http://localhost:5000/obras/)[http://localhost:5000/obras/] retorna todas as obras
Método POST http://localhost:5000/obras/
{
"titulo": "Harry Potter",
"editora": "Rocco",
"foto": "https://i.imgur.com/UH3IPXw.jpg",
"autores": ["JK Rowling"]
}
Método PUT http://localhost:5000/obras/{id}/ id substituto por um id do banco de dados necessário ter as mesmas chaves, se faltar dará o erro um comum, 400, bad request
{
"titulo": "Outro livro",
"editora": "Rocco",
"foto": "https://i.imgur.com/UH3IPXw.jpg",
"autores": ["JK Rowling"]
}
Método DELETE http://localhost:5000/obras/{id}/ Deleta a partir do id da requisição.
Método POST http://localhost:5000/upload-obras deverá ser enviado um arquivo .csv para a rota com o formato:
Caso não funcione enviar a partir da rota Pela documentação da API funcionará

