Desafio: Criar uma API para gestão de salas de reuniões, de acordo com as especificações apresentadas.
Solução desenvolvida em python versão 3.6.8.
- Flask: Micro Framework Web.
- PostgreSQL: Banco de Dados Relacional de alta performance de código aberto.
- Pycharm Professional: IDE de desenvolvimento Python.
- Ubuntu: versão Ubuntu 16.04.5 LTS.
- DBeaver: Para visualização da Base de Dados. Cliente SQL e ferramenta de administração de banco de dados.
Iniciando o download do projeto:
$ git clone git@github.com:fcschmidt/backend-challenge.git
Criar um arquivo .env
Adicionando as variáveis de ambiente:
export FLASK_APP=manage.py
export FLASK_ENV=development
DEBUG=True
DATABASE_URL='dialect+driver://username:password@host:port/database' (opcional)
Sobre a configuração do SQLAlchemy: https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls.
Caso não seja inserido o caminho DATABASE_URL
no aquivo .env
. Por default ele irá criar uma base de dados usando SQLite, no caminho sqlite:////var/tmp/scheduling_dev.sqlite
.
Criando um ambiente de desenvolvimento isolado com virtualenv ou pipenv:
$ virtualenv -p python3.6 .venv
.
Ativando o ambiente:
$ source .venv/bin/activate
.
Instalando as dependências do sistema:
$ pip install -r requirements.txt
.
flask db init
flask db migrate -m "Created Meeting Room"
flask db upgrade
Executa a aplicação: $ flask run
.
Rodando na porta padrão, caso não seja alterado: http://localhost:5000.
Assim que iniciada a aplicação, um arquivo de log
será criado na pasta logs.
Endpoints de acesso aos Recursos.
Algumas ferramentas e modulos para acessar os recurso da API:
Via terminal Curl,
Usando Scripts em Python com requests,
Aplicações para testar API Postman, Insomnia.
Método | URI | Código do Status | Resposta |
---|---|---|---|
POST | http://127.0.0.1:5000/api/v1/rooms |
201 | Nova sala criada com sucesso. |
PUT | http://127.0.0.1:5000/api/v1/rooms/<int:room_id> |
200 | Sala atualizado com sucesso. |
DELETE | http://127.0.0.1:5000/api/v1/rooms/<int:room_id> |
204 | Sala deletado com sucesso. |
Método | URI | Código do Status | Resposta |
---|---|---|---|
POST | http://127.0.0.1:5000/api/v1/schedules |
201 | Agendamento criado com sucesso. |
PUT | http://127.0.0.1:5000/api/v1/schedules/<int:scheduling_id> |
200 | Agendamento atualizado com sucesso. |
DELETE | http://127.0.0.1:5000/api/v1/schedules/<int:scheduling_id> |
204 | Agendamento deletado com sucesso. |
Método | URI | Código do Status | Resposta |
---|---|---|---|
GET | http://127.0.0.1:5000/api/v1/schedules |
200 | Lista todos os Agendamentos. |
GET | http://127.0.0.1:5000/api/v1/schedules?date=01/03/2019&room_number=10 |
200 | Lista e Filtra os Agendamentos por Data e Sala. |
- Mudar o formato da data.
- Adicionar hora inicial e hora final.
- Validação de hora, para que não aja conflito.
MIT © Fábio Schmidt