Antipola: Memanggil proxy dalam proxy menggunakan kode kustom atau sebagai target

Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.

Apigee memungkinkan Anda memanggil satu proxy API dari proxy API lainnya. Fitur ini berguna terutama jika Anda memiliki proxy API yang berisi kode yang dapat digunakan kembali, yang bisa digunakan oleh proxy API lainnya.

Anti-pola

Memanggil satu proxy API dari proxy lain menggunakan HTTPTargetConnection di endpoint target atau kode JavaScript kustom akan menghasilkan hop jaringan tambahan.

Panggil proxy 2 dari proxy 1 menggunakan HTTPTargetConnection

Contoh kode berikut memanggil proxy 2 dari proxy 1 menggunakan HTTPTargetConnection:

<!-- /antipatterns/examples/2-1.xml -->
<HTTPTargetConnection>
  <URL>https://api-test.example.com/proxy2</URL>
</HTTPTargetConnection>

Memanggil proxy 2 dari proxy 1 dari kode JavaScript

Contoh kode berikutnya memanggil proxy 2 dari proxy 1 menggunakan JavaScript:

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('https://api-test.example.com/proxy2);
response.waitForComplete();

Alur Kode

Untuk memahami mengapa hal ini memiliki kelemahan, kita perlu memahami rute permintaan seperti yang digambarkan oleh diagram di bawah ini:

1) Klien membuat permintaan ke Proxy 1, 2) Permintaan dari Proxy 1 ke Proxy 2 menimbulkan network hop,
            3) Permintaan dari Proxy 2 untuk menargetkan.
Gambar 1: Alur kode

Seperti yang digambarkan dalam diagram, permintaan melintasi beberapa komponen yang terdistribusi, termasuk {i>Router<i} dan {i>Message Processor<i}.

Dalam contoh kode di atas, memanggil proxy 2 dari proxy 1 berarti permintaan harus dirutekan melalui rute tradisional (Router > MP) saat runtime. Fungsi ini sama seperti memanggil API dari klien sehingga membuat beberapa hop jaringan yang menambah latensi. Hop ini adalah tidak perlu mengingat permintaan proxy 1 telah mencapai MP.

Dampak

Memanggil satu proxy API dari proxy API lain akan menimbulkan hop jaringan yang tidak perlu, harus diteruskan dari satu Pemroses Pesan ke Pemroses Pesan lainnya.

Praktik terbaik

  • Menggunakan pembuatan perantaian proxy untuk memanggil satu Proxy API dari proxy lainnya. Perantaian {i>proxy<i} lebih efisien karena menggunakan koneksi lokal untuk mereferensikan titik akhir target (Proxy API lain).

    Contoh kode menampilkan perantaian proxy menggunakan LocalTargetConnection di endpoint Anda definisi:

    <!-- /antipatterns/examples/2-3.xml -->
    <LocalTargetConnection>
      <APIProxy>proxy2</APIProxy>
      <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>

    Proxy API yang dipanggil akan dieksekusi dalam Pemroses Pesan yang sama; maka, ia akan menghindari hop jaringan seperti yang ditampilkan dalam gambar berikut:

    1) Klien membuat permintaan ke Proxy 1, 2) Permintaan dari Proxy 1 ke Proxy 2 dilakukan
                melalui psuedo-local call, 3) Permintaan dari Proxy 2 untuk menargetkan.
    Gambar 2: Alur kode dengan perantaian proxy

Bacaan lebih lanjut