API desenvolvida no curso ministrado pelo canal Live de Python ...
Recomendo que use o pyenv para instalar a versão 3.12.3
do Python.
caso não tenha o pyenv
instalado em sua máquina, você pode instala-lo usando o pipx, após instalar o pipx
basta rodar o seguinte comando.
❯ pipx install pyenv
Agora com o pyenv
instalado, basta roda o seguinte comando para instalar a versão 3.12.3
do Python.
❯ pyenv install 3.12.3
para definir a versão do python em seu projeto, você deve acessar pelo terminal o caminho do seu projeto e roda o comando abaixo em seu terminal.
❯ pyenv local 3.12.3
pronto, agora você tem o Python 3.12.3
definido para seu projeto.
Para instalar as dependências usando o poetry
basta executar o seguinte comando em seu terminal dentro da pasta raiz do projeto:
❯ poetry install
Caso queira instalar usando o pip
, use o comando abaixo:
❯ pip install -r requirements.txt
Warning
Certifique-se que seu ambiente esteja ativado.
Para executar os códigos, utilizaremos o taskipy
, uma biblioteca em Python
que facilita a criação de comandos para a execução de diversas ações.
Antes de executar o código é importante formatá-lo usando os pradrão definidos pela pep8, para fazer isso de forma automática basta rodar o seguinte comando no terminal:
❯ task format
Para rodar os testes basta executar o seguinte comando com o ambiente virtual ativado:
❯ task test
Saída:
All checks passed!
============================= test session starts =============================
platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /home/osfarias/workspace/workspace_python/fast_api/.venv/bin/python
cachedir: .pytest_cache
rootdir: /home/osfarias/workspace/workspace_python/fast_api
configfile: pyproject.toml
plugins: anyio-4.4.0, cov-5.0.0
collected 19 items
tests/test_app.py::test_read_root_deve_retornar_ok_e_ola_mundo PASSED [ 5%]
tests/test_app.py::test_create_user_username_existing PASSED [ 10%]
tests/test_app.py::test_create_user_email_existing PASSED [ 15%]
tests/test_app.py::test_create_user PASSED [ 21%]
tests/test_app.py::test_read_users PASSED [ 26%]
tests/test_app.py::test_read_users_with_user PASSED [ 31%]
tests/test_app.py::test_read_user PASSED [ 36%]
tests/test_app.py::test_read_user_with_user PASSED [ 42%]
tests/test_app.py::test_update_user PASSED [ 47%]
tests/test_app.py::test_update_user_not_found PASSED [ 52%]
tests/test_app.py::test_delete_user PASSED [ 57%]
tests/test_app.py::test_delete_user_not_oermission PASSED [ 63%]
tests/test_app.py::test_delete_user_not_found PASSED [ 68%]
tests/test_app.py::test_get_token PASSED [ 73%]
tests/test_app.py::test_get_token_incorret_email PASSED [ 78%]
tests/test_app.py::test_get_token_incorret_password PASSED [ 84%]
tests/test_db.py::test_create_user PASSED [ 89%]
tests/test_security.py::test_jwt PASSED [ 94%]
tests/test_security.py::test_jwt_invalid_token PASSED [100%]
---------- coverage: platform linux, python 3.12.3-final-0 -----------
Name Stmts Miss Cover
------------------------------------------
fast_api/__init__.py 0 0 100%
fast_api/app.py 61 0 100%
fast_api/database.py 4 0 100%
fast_api/models.py 12 0 100%
fast_api/schemas.py 17 0 100%
fast_api/security.py 40 3 92%
fast_api/settings.py 4 0 100%
------------------------------------------
TOTAL 138 3 98%
❯ task run
Saída:
A página localhost:8000/docs
do FastAPI é uma interface gerada automaticamente pela biblioteca que fornece uma documentação interativa para sua API. Baseada no Swagger UI, esta página permite que desenvolvedores visualizem e testem todas as rotas e endpoints da API diretamente no navegador. Cada endpoint é detalhado com informações sobre métodos HTTP suportados, parâmetros de entrada, respostas possíveis e modelos de dados. A funcionalidade interativa permite enviar requisições e visualizar as respostas, facilitando a verificação e o debugging da API durante o desenvolvimento. Essa documentação dinâmica é uma ferramenta poderosa para garantir que a API esteja funcionando conforme o esperado e para melhorar a produtividade dos desenvolvedores.
A imgem abaixo é a visalização dos dados usando o DBeaver
, foi usando o SQLite
como banco de dados para perssistir os dados.