Membuat API Gatewat Menggunakan Netflix Zuul

Spring Cloud Netflix Zuul merupakan gerbang utama yang akan dilewati oleh request dari apps atau website yang menuju backend. Zuul dapat berfungsi sebagai API Gateway, security, dll.

Membuat API Gateway

Sebelumnya kita telah membuat eureka server dan eureka client yang terintegrasi dengan Hystrix.
Sekarang kita akan mencoba membuat api gatewat dan mengintegrasikanya.

  • Buat project baru menggunakan Spring Initializr
  • Tambahkan dependency spring-cloud-starter-zuul.
  • Tambahkan anotasi @EnableZuulProxy pada main class
  • Tambahkan konfigurasi zuul
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    spring:
    application:
    name: api-gateway
    zuul:
    prefix: /api
    routes:
    eureka-client:
    path: /pertama/**
    serviceId: EUREKA-CLIENT
    other-eureka-client:
    path: /kedua/**
    serviceId: OTHER-EUREKA-CLIENT
    server:
    port: 8004

Dengan adanya API Gateway untuk memanggil API dari masing masing backend tidak harus memanggilnya secara manual dengan menyebutkan portnya, tetapi hanya perlu memanggilnya via API Gateway sesuai pathnya. Nantinya service yang bernama eureka-client akan diinisialisasi menggunakan path /pertama. Sedangkan service yang bernama eureka-client akan diinisialisasi menggunakan path /kedua.

Apabila dulu jika ingin mengakses API di service eureka-client menggunakan http://localhost:8002/api/halo sekarang dapat diganti dengan http://localhost:8004/api/pertama/api/halo. Sedangkan apabila dulu jika ingin mengakses API di service other-eureka-client menggunakan http://localhost:8003/api/halo sekarang dapat diganti dengan http://localhost:8004/api/kedua/api/halo.

Hal ini akan meringankan beban dalam development aplikasi karena tidak perlu menghafal port untuk setiap servicenya, tetapi hanya perlu mengetahui nama servinya.

  • Konfigurasi tambahan
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    # Konfigurasi Config Service
    spring:
    cloud:
    config:
    uri: http://localhost:10003
    # Konfigurasi Discovery Service
    eureka:
    client:
    service-url:
    defaultZone: http://localhost:8001/eureka
    # Konfigurasi Circuit Breaker
    hystrix:
    command:
    default:
    execution:
    isolation:
    thread:
    timeoutInMilliseconds: 10000
Bagikan