Микросервис для управления данными гостей. Реализован CRUD с валидацией данных. Если страна не указана, она автоматически определяется по номеру телефона. Написан на PHP (Lumen) и MySQL. Микросервис работает в Docker. В ответах сервера присутствуют заголовки X-Debug-Time и X-Debug-Memory.
-
Клонировать репозиторий:
git clone roman2959/guest-microservice cd guest-microservice
-
Скопировать файл
.env.example
в.env
и настроить его:cp .env.example .env
-
Установить зависимости:
composer install
-
Собрать и запустить контейнеры:
docker-compose up -d --build
-
Выполнить миграции базы данных:
docker-compose exec app php artisan migrate
Для запуска тестов:
docker-compose exec app vendor/bin/phpunit
GET /api/guests
Возвращает список всех гостей.
Пример запроса:
curl -X GET http://localhost:8000/api/guests
Пример ответа:
[
{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+79001234567",
"country": "RU",
"created_at": "2024-08-14T11:08:48.000000Z",
"updated_at": "2024-08-14T11:08:48.000000Z"
}
]
GET /api/guests/{id}
Возвращает данные гостя с указанным ID.
Пример запроса:
curl -X GET http://localhost:8000/api/guests/1
Пример ответа:
{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+79001234567",
"country": "RU",
"created_at": "2024-08-14T11:08:48.000000Z",
"updated_at": "2024-08-14T11:08:48.000000Z"
}
POST /api/guests
Создает нового гостя.
Параметры:
first_name
(string, обязательный) - Имя гостяlast_name
(string, обязательный) - Фамилия гостяemail
(string, обязательный) - Email гостя (уникальный)phone
(string, обязательный) - Номер телефона гостя (уникальный)country
(string, необязательный) - Страна гостя (если не указана, определяется автоматически по номеру телефона)
Пример запроса:
curl -X POST http://localhost:8000/api/guests \
-H "Content-Type: application/json" \
-d '{"first_name": "John", "last_name": "Doe", "email": "john.doe@example.com", "phone": "+79001234567"}'
Пример ответа:
{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+79001234567",
"country": "RU",
"created_at": "2024-08-14T11:08:48.000000Z",
"updated_at": "2024-08-14T11:08:48.000000Z"
}
PUT /api/guests/{id}
Обновляет данные гостя с указанным ID.
Параметры:
first_name
(string, необязательный) - Имя гостяlast_name
(string, необязательный) - Фамилия гостяemail
(string, необязательный) - Email гостя (должен быть уникальным)phone
(string, необязательный) - Номер телефона гостя (должен быть уникальным)country
(string, необязательный) - Страна гостя
Пример запроса:
curl -X PUT http://localhost:8000/api/guests/1 \
-H "Content-Type: application/json" \
-d '{"first_name": "Jane"}'
Пример ответа:
{
"id": 1,
"first_name": "Jane",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+79001234567",
"country": "RU",
"created_at": "2024-08-14T11:08:48.000000Z",
"updated_at": "2024-08-14T11:12:48.000000Z"
}
DELETE /api/guests/{id}
Удаляет гостя с указанным ID.
Пример запроса:
curl -X DELETE http://localhost:8000/api/guests/1
Пример ответа:
{
"message": "Guest deleted"
}