Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Proxy API adalah facade terkelola untuk layanan backend. Konfigurasi proxy API dasar terdiri dari ProxyEndpoint (menentukan URL proxy API) dan TargetEndpoint (menentukan URL layanan backend).
Apigee menawarkan banyak fleksibilitas untuk membangun perilaku canggih berdasarkan pola ini. Misalnya, Anda dapat menambahkan kebijakan untuk mengontrol cara API memproses permintaan klien sebelum mengirimkannya ke layanan backend, atau memanipulasi respons yang diterima dari layanan backend sebelum meneruskannya ke klien. Anda dapat memanggil layanan lain menggunakan kebijakan panggilan layanan, menambahkan perilaku kustom dengan menambahkan kode Javascript, dan bahkan membuat proxy API yang tidak memanggil layanan backend.
Antipola
Menggunakan panggilan layanan untuk memanggil layanan backend di proxy API tanpa rute ke endpoint target secara teknis dapat dilakukan, tetapi akan menyebabkan hilangnya data analisis tentang performa layanan eksternal.
Proxy API yang tidak berisi rute target dapat berguna jika Anda tidak perlu meneruskan pesan permintaan ke TargetEndpoint. Sebagai gantinya, ProxyEndpoint melakukan semua pemrosesan yang diperlukan. Misalnya, ProxyEndpoint dapat mengambil data dari lookup ke penyimpanan nilai kunci layanan API dan menampilkan respons tanpa memanggil layanan backend.
Anda dapat menentukan Route null di proxy API, seperti yang ditunjukkan di sini:
<RouteRule name="noroute"/>
Proxy yang menggunakan rute null adalah proxy "tanpa target", karena tidak memanggil layanan backend target.
Secara teknis, panggilan layanan dapat ditambahkan ke proxy tanpa target untuk memanggil layanan eksternal, seperti yang ditunjukkan dalam contoh di bawah:
<!-- /antipatterns/examples/service-callout-no-target-1.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request> <Step> <Name>ServiceCallout-InvokeBackend</Name> </Step> </Request> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPProxyConnection> <BasePath>/no-target-proxy</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="noroute"/> </ProxyEndpoint>
Namun, proxy tidak dapat memberikan informasi analisis tentang perilaku layanan eksternal (seperti waktu pemrosesan atau rasio error), sehingga sulit untuk menilai performa layanan eksternal.
Dampak
- Informasi analisis tentang interaksi dengan layanan eksternal ( kode error, waktu respons, target performa, dll.) tidak tersedia
- Setiap logika spesifik yang diperlukan sebelum atau setelah memanggil panggilan layanan disertakan sebagai bagian dari logika proxy secara keseluruhan, sehingga lebih sulit dipahami dan digunakan kembali.
Praktik Terbaik
Jika proxy API hanya berinteraksi dengan satu layanan eksternal, proxy harus mengikuti pola desain dasar, dengan layanan backend ditentukan sebagai endpoint target proxy API. Proxy tanpa aturan perutean ke endpoint target tidak boleh memanggil layanan backend menggunakan kebijakan ServiceCallout.
Konfigurasi proxy berikut menerapkan perilaku yang sama seperti contoh di atas, tetapi mengikuti praktik terbaik:
<!-- /antipatterns/examples/service-callout-no-target-2.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ProxyEndpoint name="default"> <Description/> <FaultRules/> <PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <Flows/> <HTTPProxyConnection> <BasePath>/simple-proxy-with-route-to-backend</BasePath> <Properties/> <VirtualHost>secure</VirtualHost> </HTTPProxyConnection> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
Gunakan Panggilan layanan untuk mendukung skenario mashup, tempat Anda ingin memanggil layanan eksternal sebelum atau setelah memanggil endpoint target. Info layanan tidak dimaksudkan untuk menggantikan pemanggilan endpoint target.