- Docker
- Docker Compose
git clone git@github.com:marian-roller/laravel_crud.git crud_test
cd crud_test
cp .env.example .envDB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
MAIL_MAILER=smtp
MAIL_SCHEME=null
MAIL_HOST=mailpit
MAIL_PORT=1025
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}"
WWWUSER=1000
WWWGROUP=1000Procedura instalacji:
docker compose up -d
docker compose exec laravel.test bash
composer install
php artisan key:generate
exit
docker compose down -v
docker compose up -d
docker compose exec laravel.test bash
php artisan migrateW Postmanie, dla dockera base_url: http://localhost
API do zarządzania rekordami osób (Person) wraz z ich adresami e-mail.
GET /api/people
Opis: Zwraca listę wszystkich osób wraz z ich e-mailami.
Przykładowa odpowiedź (200):
[
{
"id": 23,
"firstName": "Stefan",
"lastName": "Jankowski",
"phoneNumber": "984654421",
"created_at": "2025-11-01T10:37:13.000000Z",
"updated_at": "2025-11-01T10:37:13.000000Z",
"emails": [
{
"id": 42,
"person_id": 23,
"email": "a@example.com",
"created_at": "2025-11-01T10:37:13.000000Z",
"updated_at": "2025-11-01T10:37:13.000000Z"
}
]
},
{
"id": 26,
"firstName": "Jan",
"lastName": "Jankowski",
"phoneNumber": "984654421",
"created_at": "2025-11-01T14:56:11.000000Z",
"updated_at": "2025-11-01T14:56:11.000000Z",
"emails": [
{
"id": 49,
"person_id": 26,
"email": "b@example.com",
"created_at": "2025-11-01T14:56:11.000000Z",
"updated_at": "2025-11-01T14:56:11.000000Z"
},
{
"id": 50,
"person_id": 26,
"email": "c@example.com",
"created_at": "2025-11-01T14:56:11.000000Z",
"updated_at": "2025-11-01T14:56:11.000000Z"
}
]
}
]POST /api/people
Opis: Tworzy nową osobę i wysyła e-maile powitalne do podanych adresów.
Body (JSON):
{
"firstName": "Paweł",
"lastName": "Pawłowski",
"phoneNumber": "984654421",
"emails": ["m@example.com", "n@example.com"]
}Przykładowa odpowiedź (201):
{
"firstName": "Paweł",
"lastName": "Pawłowski",
"phoneNumber": "984654421",
"updated_at": "2025-11-01T18:28:09.000000Z",
"created_at": "2025-11-01T18:28:09.000000Z",
"id": 27,
"emails": [
{
"id": 51,
"person_id": 27,
"email": "m@example.com",
"created_at": "2025-11-01T18:28:09.000000Z",
"updated_at": "2025-11-01T18:28:09.000000Z"
},
{
"id": 52,
"person_id": 27,
"email": "n@example.com",
"created_at": "2025-11-01T18:28:09.000000Z",
"updated_at": "2025-11-01T18:28:09.000000Z"
}
]
}GET /api/people/{id}
Opis: Zwraca szczegóły pojedynczej osoby wraz z jej e-mailami.
Przykładowa odpowiedź (200):
{
"id": 23,
"firstName": "Stefan",
"lastName": "Jankowski",
"phoneNumber": "984654421",
"created_at": "2025-11-01T10:37:13.000000Z",
"updated_at": "2025-11-01T10:37:13.000000Z",
"emails": [
{
"id": 42,
"person_id": 23,
"email": "a@example.com",
"created_at": "2025-11-01T10:37:13.000000Z",
"updated_at": "2025-11-01T10:37:13.000000Z"
}
]
}PUT /api/people/{id}
Opis: Aktualizuje dane osoby oraz zarządza jej e-mailami (dodaje nowe i usuwa stare). Wysyła e-maile powitalne dla nowych i pożegnalne dla usuniętych.
Body (JSON):
(Wyrane pola lub wszystkie)
{
"firstName": "Marek",
"lastName": "Markowski",
"phoneNumber": "984654421",
"emails": ["u@example.com"]
}Przykładowa odpowiedź (200):
{
"id": 27,
"firstName": "Marek",
"lastName": "Markowski",
"phoneNumber": "984654421",
"created_at": "2025-11-01T18:28:09.000000Z",
"updated_at": "2025-11-01T18:32:54.000000Z",
"emails": [
{
"id": 54,
"person_id": 27,
"email": "u@example.com",
"created_at": "2025-11-01T18:32:54.000000Z",
"updated_at": "2025-11-01T18:32:54.000000Z"
}
]
}DELETE /api/people/{id}
Opis: Usuwa osobę i wysyła e-maile pożegnalne do wszystkich powiązanych adresów.
Przykładowa odpowiedź (200):
{
"message": "Rekord Piotr Piotrowski został usunięty, wysłano maile pożegnalne."
}- Wysłanie maila powitalnego na każdy adres e-mail dodawanej osoby (
storerequest). - Wysłanie maila powitalnego na każdy adres e-mail dodany podczas
updatedanej osoby. - Wysłanie maila pożegnalnego na każdy adres e-mail usuwany podczas
updatedanej osoby. - Wysłanie maila pożegnalnego na wszystkie adresy e-mail usuwanej osoby (
destroyrequest).
Maile trafiają do skrzynki MailPita: http://localhost:8025
Testy (w kontenerze laravel.test):
php artisan test