Para facilitar o acesso a aplicação para testes, ela foi disponilizada utilizando a plataforma Heroku e pode ser acessada em:
- https://school-api-drf.herokuapp.com/ (raiz - redireciona para documentação)
- https://school-api-drf.herokuapp.com/docs/ (documentação)
- https://school-api-drf.herokuapp.com/api/v1/ (raiz da api)
- API que seja capaz de armazenar dados de estudantes no sistema;
- Criar endpoints para: criar, listar, alterar, remover e filtrar estudantes.
- Python
- Django
- Django Rest Framework
- PostgreSQL
- Pytest
- Coverage
- Flake8 (linter)
- Docker/docker-compose
- Github Actions (CI/CD)
- Heroku
Para facilitar a utilização da API, foi utilizada a ferramenta Swagger para gerar uma página onde é possível conferir e executar todos os endpoints disponíveis.
URL da Documentação: https://school-api-drf.herokuapp.com/docs/
Pré-requisitos: Ter instalado as versões mais recentes da linguagem Python e da ferramenta docker-compose.
Obs: Usaremos o docker-compose para subir um container com um banco PostgreSQL para desenvolvimento.
-
Criar um arquivo
.env
com base no arquivocontrib/env-sample
. -
Criar um ambiente virtual para isolar as dependências que instalaremos
$ python -m venv .venv --prompt school_api
-
Ativar o ambiente criado
No Linux
$ source .venv/bin/activate
Informações sobre ativação em outros Sistemas Operacionais podem ser conferidas em: https://docs.python.org/pt-br/3/library/venv.html
-
Instalar as dependências do sistema
$ pip install -r requirements-dev.txt
-
Subir o container com o banco de dados
$ docker-compose up -d
-
Executar as migrações para criar toda a estrutura do banco de dados
$ python manage.py migrate
-
Rodar o sistema
$ python manage.py runserver
A aplicação estará disponível em: http://localhost:8000/
-
Rodar os testes e ver a cobertura
$ pytest --cov
-
Rodar o linter
$ flake8 .
-
Carregar alguns dados inciais par ao banco de dados
$ python manage.py loaddata dumpdata.json
Para facilitar a disponibilização do sistema no Heroku foi utilizado a módulo venv de ambientes virtuais do Python, entretanto é sempre interessante cogitar a utilização do ambiente todo em containers para garantir um ambiente ainda mais isolado e controlado, então talvez seja interessante a utilização "completa" do Docker no projeto e não somente para a instância do banco de dados.