Anda sedang melihat dokumentasi Apigee dan Apigee hybrid.
Lihat dokumentasi
Apigee Edge.
Proxy API adalah fasad 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 membuat perilaku yang canggih di atas pola ini. Misalnya, Anda dapat menambahkan kebijakan untuk mengontrol cara API memproses permintaan klien sebelum mengirimnya 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
Penggunaan info layanan untuk memanggil layanan backend di proxy API tanpa rute ke endpoint target secara teknis dapat dilakukan, tetapi akan mengakibatkan 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 pencarian ke penyimpanan key/value layanan API dan menampilkan respons tanpa memanggil layanan backend.
Anda dapat menentukan Rute 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, Anda dapat menambahkan panggilan layanan 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, performa target, dll.) tidak tersedia
- Logika spesifik apa pun yang diperlukan sebelum atau setelah memanggil callout 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 pemilihan rute ke endpoint target tidak boleh memanggil layanan backend menggunakan kebijakan ServiceCallout.
Konfigurasi proxy berikut menerapkan perilaku yang sama dengan 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 info 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.