Request
|
|
|
Api Gateway --- Auth Provider
|\__________________________
| | |
| | |
Service-1 Service-2 Service-3
Setiap service terdapat file konfigurasi (.env
) yang dapat disesuaikan dengan runtime environment
-
Buat database
microservices
-
Ubah file
.env
yang terdapat pada service security (security/.env
), sesuaikan dengan konfigurasi database -
Build dan jalankan
docker-compose up
atau jika menggunakan task cukup dengantask start
-
Seeding data melalui endpoint
POST http://localhost:2727/api/seed
-
Login melalui endpoint
POST http://localhost:2727/api/login
{
"email": "[email protected]",
"password": "admin"
}
Maka akan mengembalikan response
{
"token": "[TOKEN]"
}
- Panggil endpoint
GET http://localhost:2727/api/hello
dengan headerAuthorization: Bearer [TOKEN]
maka akan mengembalikan response
{
"message": "Hello Service 1"
}
- Panggil endpoint
GET http://localhost:2727/api/hey
dengan headerAuthorization: Bearer [TOKEN]
untuk simulasi internal service call yaitu call service 2 dari service 3, maka akan mengembalikan response
{
"message": "Service 3 called service 2 with response: Hello Service 2"
}
- Publik
POST /login
POST /seed
- Privat (Butuh header authorization)
POST /api/users
PUT /api/users/:id
DELETE /api/users/:id
GET /api/users/:id
GET /api/users
POST /api/validate
GET /api/hello
GET /api/hi
GET /api/hey
Setiap service dapat dikembangkan secara independen tanpa perlu terkoneksi dengan Api Gateway atau Arsitektur secara utuh. Untuk melakukan simulasi privat endpoint (Api) cukup dengan mengirimkan header X-User-ID
dan X-User-Email
pada request.
Ini karena Api Gateway dirancang untuk melakukan validasi token dan kemudian mengubah token menjadi header X-User-ID
dan X-User-Email
melalui endpoint /api/validate
yang mengembalikan informasi user. Header (X-User-ID
dan X-User-Email
) kemudian diteruskan ke endpoint service (sesuai dengan mapping) sebagai tanda bahwa request telah divalidasi oleh Api Gateway