Автор: Виноградов Данил
docker-compose up
docker rm $(docker ps -a -q) && docker volume prune -f
docker rmi -f em_test_task
docker-compose up
У проекта есть описание методов в Postman
Метод добавления нового человека
Принимает такие параметры: name,surname,patronymic(опционально). На основе переданных в него данных структура дополняется информацией из сторонних API, возраст и пол получаем по имени, национальность - по фамилии.
Пример ниже показывает создание пользователя и конечную структуру
Принимаемая структура
{
"name":"Danil",
"surname":"Vinogradov",
"patronymic":"Sergeevich"
}
Дополненная структура
{
"name": "Danil",
"surname": "Vinogradov",
"patronymic": "Sergeevich",
"age": 57,
"gender": "male",
"nationality": "RU",
"created_at": "0001-01-01T00:00:00Z",
"updated_at": "0001-01-01T00:00:00Z"
}
Метод получения человека по его id в системе
Возвращает структуру, что представлена ниже
Возвращаемая структура
{
"id": 1,
"name": "Danil",
"surname": "Vinogradov",
"patronymic": "Sergeevich",
"age": 57,
"gender": "male",
"nationality": "RU",
"created_at": "2024-01-29T08:45:58.188781Z",
"updated_at": "2024-01-29T08:45:58.188781Z"
}
Метод получения списка людей с пагинацией. Параметр page отвечает за страницу, per_page - за количество отображаемых на странице структур.
Возвращает набор структур, подобной той, что представлена ниже.
Возвращаемая структура
{
"id": 1,
"name": "Danil",
"surname": "Vinogradov",
"patronymic": "Sergeevich",
"age": 57,
"gender": "male",
"nationality": "RU",
"created_at": "2024-01-29T08:45:58.188781Z",
"updated_at": "2024-01-29T08:45:58.188781Z"
}
Метод получения cписка людей с фильтрами и пагинацией
Возвращает структуры, соответствующие фильтру. Для фильтрации с обозначением границ "from" и "to" доступны поля "id" и "age", поля "nation" и "gender" доступны без границ, остальные элементы будут выводиться просто с пагинацией.
Принимаемая структура
{
"sort_by": "id",
"from": 1,
"to": 4
}
Возвращаемая структура
{
"id": 1,
"name": "Danil",
"surname": "Vinogradov",
"patronymic": "Sergeevich",
"age": 57,
"gender": "male",
"nationality": "RU",
"created_at": "2024-01-29T08:45:58.188781Z",
"updated_at": "2024-01-29T08:45:58.188781Z"
}
Метод обновления структуры по ее id. "patronymic" - опционален, в случае его отсутствия это поле не будет выводиться.
Возвращает сообщение или ошибку.
Принимаемая структура
{
"name": "Vladimir",
"surname":"Zabelin",
"patronymic":"Vladimirovich"
}
Возвращаемая структура
{
"message": "Person updated successfully"
}
Метод удаления структуры по id
Возвращает сообщение или ошибку.
Возвращаемая структура
{
"message": "Person was deleted"
}