- Python: Linguagem principal da aplicação.
- Quart: Framework assíncrono baseado no Flask.
- Quart-Auth: Quart-Auth is an extension for Quart to provide for secure cookie authentication (session management).
- Quart-Schema: Quart-Schema is a Quart extension that provides schema validation and auto-generated API documentation.
- Tortoise-ORM: ORM para gerenciar as interações com o banco de dados.
- Aerich: Aerich is a database migrations tool for TortoiseORM, which is like alembic for SQLAlchemy, or like Django ORM with it's own migration solution.
- PostgreSQL: Banco de dados relacional.
- Docker: Ferramenta de contêinerização para facilitar o deployment e a execução da aplicação.
-
Crie um ambiente virtual:
python3 -m venv venv source venv/bin/activate -
Instale as dependências:
pip install -r requirements.txt
-
Inicie a aplicação:
python run.py
-
Construa a imagem Docker:
docker-compose build
-
Inicie os contêineres:
docker-compose up -d
Para executar as migrações do banco de dados, utilize os seguintes comandos:
docker exec -it <container_id> /bin/sh
aerich init -t app.database.config.TORTOISE_ORM
aerich init-db
aerich migrate
aerich update- A documentação da API é gerada automaticamente através do Quart-Schema.
- Acesse a documentação em
http://localhost:5000//openapi.json. - Acesse a documentação em
http://localhost:5000/redocs. - Acesse a documentação em
http://localhost:5000/scalar. - Acesse a documentação em
http://localhost:5000/docs.
- Acesse a documentação em
Link para estrutura de:
REST Client (extensao):
-
Instale a extensao "REST Client" no vscode adicione no settings.json
"rest-client.environmentVariables": { "$shared": { "prodToken": "foo", "nonProdToken": "bar", }, "local": { "version": "v1", "host": "localhost", "port": "5000", "token": "{{$shared nonProdToken}}", "secretKey": "dev-secret" }, "production": { "host": "example.com", // teca-coif.com.br "token": "{{$shared prodToken}}", "secretKey" : "prodSecret" } },
Em seguida mude para o environment Local
-
Na pasta ./tests/rest-client esta os .http para realizar as chamadas nos endpoints