API Gateway adalah gerbang dari beberapa API yang bertindak sebagai titik masuk tunggal untuk grup microservices yang ditentukan dan berfungsi sebagai management API, merge beberapa API, authentication API dan sebagainya.
API Gateway merupakan pemrograman yang berada di depan application programming interface (API) yang menangani terjemahan protokol. Pemrograman ini sangat berguna jika klien yang dibuat dengan microservices menggunakan beberapa API yang berbeda.
Microservices itu sendiri sebenarnya adalah kumpulan dari beberapa service atau kumpulan dari beberapa API yang biasanya berbentuk REST API dan menggunakan protokol HTTP.
Hal ini disebabkan karena client biasanya hanya mengakses 1 URL REST API, sedangkan microservices memiliki banyak service REST API. Oleh karena itu, untuk mengatasi masalah tersebut maka kita bisa menggunakan API Gateway.
Ada banyak contoh API Gateway yang beredar di pasaran seperti express gateway, kong, tyk, API Umbrella dan sebagainya. Pada tutorial kali ini kita akan menggunakan express gateway yang dibangun di atas framework Express.js.
Express-Gateway adalah framework yang digunakan untuk membuat API Gateway pada Node.js yang dibangun di atas framework Express.js. Instalasi Express-Gateway dapat dilakukan dengan mengetikkan perintah berikut pada terminal.
npm install –g express-gateway
Lalu, buatlah sebuah API Gateway dengan mengetikkan perintah berikut.
eg gateway create
Berikan nama dan pilih tipe Express Gateway.
Berikutnya, berikan perintah untuk memulai Gateway.
cd api_gateway && npm start
Gateway berjalan pada port 8080 dan admin server pada port 9876.
Kemudian, buka folder config untuk mengatur konfigurasi Express Gateway dengan perintah berikut.
cd config
Express Gateway Configuration disimpan dalam text files (yml).
Selanjutnya, buka file gateway.config.yml dengan text editor Anda dan kita akan coba menggunakan service yang menyediakan endpoint seperti httpbin.org. Tambahkan serviceEndpoints dan apiEndpoints tersebut seperti berikut.
Tambahkan juga pipelines pada bagian pipelines seperti berikut.
Setelah itu, simpanlah file gateway.config.yml tersebut. Terlihat pada terminal tampil info: hot-reload config completed seperti berikut.
Selanjutnya, kita akses service endpoint secara langsung dengan perintah berikut.
curl https://httpbin.org/ip
Hasilnya, tampil respon ip seperti berikut.
Jika kita mengakses API pada api_gateway dengan perintah berikut.
curl http://localhost:8080/ip
Maka tampil respon ip yang sama seperti berikut.
Perhatikan! Kedua pengujian tersebut menghasilkan respon JSON yang identik.
Buka kembali file gateway.config.yml dan tambahkan key-auth pada policies seperti berikut.
Jika kita mengkses API pada api_gateway, maka tampil respons "Unauthorized" yang berarti API Endpoint tidak dapat diakses seperti berikut.
Untuk membuat API user, buka file system.config.yml dan tambahkan host dan port pada redis seperti berikut.
Kemudian simpan file system.config.yml tersebut dan restart Express Gateway seperti berikut.
Lalu, buatlah sebuah user dengan perintah seperti berikut.
eg user create
Berikan nama user dan lengkapi data user tersebut.
Berikutnya, buatlah API key untuk user yang telah kita buat tersebut dengan perintah berikut.
eg credentials create -c babastudio -t key-auth -q
Jika terminal atau cmd hang, jalankan pada Git Bash seperti berikut.
Selanjutnya, kita akses kembali API Endpoint dengan API Key dengan perintah berikut.
curl -H "Authorization: apiKey 7v9Gwz0xXe425URU85h0VE:6kH5frA4bcLokUPSejkE8p" http://localhost:8080/ip
Hasilnya, terlihat pada terminal API Endpoint berhasil diakses seperti berikut.
Untuk mengatur konfigurasi rate limit, buka file gateway.config.yml dan tambahkan rate-limit pada policies seperti berikut.
Pada contoh di atas, kita membatasi request maksimal 3 request/minute per unique client. Untuk mengujinya, buka aplikasi Postman, lalu masukkan URL dan Header. Sedangkan ApiKey dapat diatur sebagai Authorization request header seperti berikut.
Lalu, klik tombol Send untuk mengirim request ke API Endpoint dan klik tab response Headers seperti berikut.
Perhatikan, response Headers X-RateLimit-Remaining berkurang menjadi 2. Kirimkan lagi request ke API Endpoint dan klik tab response Headers tersebut seperti berikut.
Perhatikan, response Headers X-RateLimit-Remaining berkurang lagi menjadi tersisa 1. Selanjutnya kita kirimkan lagi request ke API Endpoint dan klik tab response Headers seperti berikut.
Hasilnya, terlihat response Headers X-RateLimit-Remaining berkurang menjadi 0. Jika kita kirimkan lagi request ke API Endpoint dan klik tab response Headers seperti berikut.
Maka statusnya berubah menjadi 429 karena telah melebihi 3 kali request. Jika kita klik tab response Body, maka tampil respons "Too many requests, please try again later." pada response Body seperti berikut.
Dengan demikian, pada tutorial ini kita telah berhasil membuat dan menjalankan API Gateway, membuat user, membuat API Key dan membatasi akses dengan rate limit.
Tukimin
5 min agoHai mas kamal, ada yang bisa dimantu? -roma
Replyjenkins
5 min agoUt enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Replykieran bad
5 min agoLorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Reply