Необходимость в разработке сервиса терминологии и REST-API к нему.
-
База данных: PostgreSQL.
-
Фреймворк: Django-rest-framework.
-
WSGI: Gunicorn.
-
Веб-сервер: Nginx.
-
Развертывание: Docker-Compose.
Получение списка элементов справочников / элеметов заданного справочника текущей версии / элементов заданного справочника указанной версии:
Сервис предоставляет удобную административную панель, в которой совершать различные манипуляции со справочниками и их элементами.
Изменить название example.env на .env, при необходимости внеся в него коррективы (для Prod оставить DJANGO_DEBUG пустым, для Dev - поставить любое значение).
Prod:
- Убедиться, что необходимые порты для работы проекта не заняты (8080 - nginx, 5433 - postgres, 8001 - django/gunicorn):
sudo netstat -tulpn | grep :<xxxx>
где xxxx
- номер порта.
- Если на данных портах запущены стандартные сервисы, их необходимо выключить:
sudo kill `sudo lsof -t i:<xxxx>`
- Создать docker-compose:
docker-compose build
- Запустить docker-compose:
mkdir static; docker-compose up -d
- Остановить и удалить docker-compose:
docker-compose down -v
Dev:
- Убедиться, что необходимые порты для работы проекта не заняты (8080 - django/gunicorn):
sudo netstat -tulpn | grep :<xxxx>
где xxxx
- номер порта.
- Если на данных портах запущены стандартные сервисы, их необходимо выключить:
sudo kill `sudo lsof -t i:<xxxx>`
- Запустить скрипт:
./dev_entrypoint.sh
- Остановить работу:
Ctrl+C
Эндпоинты:
/api/handbook/<pk>
/api/item_handbook/<pk>
/api/item_handbook_validator/
Методы:
GET
Ссылка | Значение |
---|---|
/api/handbook/ | Получение списка справочников |
/api/handbook/?validity_date=2021/07/15 | Получение списка справочников, актуальных на указанную дату |
/api/item_handbook/ | Получение элементов справочников |
/api/item_handbook/?global_id=1 | Получение элементов заданного справочника текущей версии |
/api/item_handbook/?global_id=1&version=0.0.1 | Получение элементов заданного справочника указанной версии |
POST
Ссылка | Значение |
---|---|
/api/item_handbook_validator/ | Валидация элементов заданного справочника текущей версии * |
/api/item_handbook_validator/ | Валидация элемента заданного справочника по указанной версии ** |
*
- Пример тела запроса:
[
{
"global_id": 1
},
{
"code": "Test item 1",
"value": "1"
},
{
"code": "Test item 2",
"value": "2"
},
]
**
- Пример тела запроса:
[
{
"global_id": 1,
"version": "0.0.1"
},
{
"code": "Test item 1",
"value": "1"
}
]
Зайти в панель администратора (пользователь создается по умолчанию, доступ для входа - /admin/), если не менялись соответствующие параметры в окружении:
Name: name_admin
Email: email_admin@admin.admin
Password: password_admin
./manage.py test