Cara Menggunakan API Gateway

Apakah yang dimaksud dengan API Gateway?

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 gatewaykongtykAPI Umbrella dan sebagainya. Pada tutorial kali ini kita akan menggunakan express gateway yang dibangun di atas framework Express.js.

 

Instalasi Express-Gateway

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

 

Membuat API Gateway

Lalu, buatlah sebuah API Gateway dengan mengetikkan perintah berikut.

eg gateway create

 

Berikan nama dan pilih tipe Express Gateway.

api gateway config

 

Memulai Gateway

Berikutnya, berikan perintah untuk memulai Gateway.

cd api_gateway && npm start

 

Gateway berjalan pada port 8080 dan admin server pada port 9876.

start gateway

Mengatur Konfigurasi Express Gateway

Kemudian, buka folder config untuk mengatur konfigurasi Express Gateway dengan perintah berikut.

cd config

 

Express Gateway Configuration disimpan dalam text files (yml).

gateway config yml

 

Tentukan Backend Service

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.

buka gateway config yml

Tambahkan juga pipelines pada bagian pipelines seperti berikut.

pipelines

Setelah itu, simpanlah file gateway.config.yml tersebut. Terlihat pada terminal tampil info: hot-reload config completed seperti berikut.

hot reload config completed

 

Akses Service Endpoint & API

Selanjutnya, kita akses service endpoint secara langsung dengan perintah berikut.

curl https://httpbin.org/ip

 

Hasilnya, tampil respon ip seperti berikut.

service endpoint

Jika kita mengakses API pada api_gateway dengan perintah berikut.

curl http://localhost:8080/ip

 

Maka tampil respon ip yang sama seperti berikut.

akses api pada api gateway

Perhatikan! Kedua pengujian tersebut menghasilkan respon JSON yang identik.

 

Mengamankan API Endpoint dengan key-auth

Buka kembali file gateway.config.yml dan tambahkan key-auth pada policies seperti berikut.

key auth pada policies

Jika kita mengkses API pada api_gateway, maka tampil respons "Unauthorized" yang berarti API Endpoint tidak dapat diakses seperti berikut.

api gateway unauthorized

 

Membuat API User

Untuk membuat API user, buka file system.config.yml dan tambahkan host dan port pada redis seperti berikut.

redis

Kemudian simpan file system.config.yml tersebut dan restart Express Gateway seperti berikut.

restart express gateway

Lalu, buatlah sebuah user dengan perintah seperti berikut.

eg user create

 

Berikan nama user dan lengkapi data user tersebut.

create api user

 

Membuat API Key

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.

create api key

 

Akses API Endpoint dengan key-auth

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.

api endpoint berhasil diakses

 

Mengatur Konfigurasi Rate Limit untuk API Endpoint

Untuk mengatur konfigurasi rate limit, buka file gateway.config.yml dan tambahkan rate-limit pada policies seperti berikut.

rate limit

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.

authorization request header

Lalu, klik tombol Send untuk mengirim request ke API Endpoint dan klik tab response Headers seperti berikut.

x ratelimit remaining

Perhatikan, response Headers X-RateLimit-Remaining berkurang menjadi 2. Kirimkan lagi request ke API Endpoint dan klik tab response Headers tersebut seperti berikut.

x ratelimit remaining

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.

x ratelimit remaining

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.

429

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.

too many request

Dengan demikian, pada tutorial ini kita telah berhasil membuat dan menjalankan API Gateway, membuat user, membuat API Key dan membatasi akses dengan rate limit.

Web developer and bad designer. Enthusiast in research and development of computer and information technology. Hard worker and militant spirituality. Care about science, technology and environment especially renewable energy.

Related Posts

3 Comments

Tukimin

5 min ago

Hai mas kamal, ada yang bisa dimantu? -roma

Reply

jenkins

5 min ago

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Reply

kieran bad

5 min ago

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Reply

Leave a reply