Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi
Apigee X. info
Alur adalah elemen penyusun dasar proxy API. Alur memungkinkan Anda memprogram perilaku API dengan mengizinkan Anda mengonfigurasi urutan eksekusi kebijakan dan kode oleh proxy API.
Untuk ringkasan konseptual alur, lihat Mengontrol cara proxy dieksekusi dengan alur.
Topik ini menjelaskan cara membuat alur bersyarat dan menambahkan logika (kebijakan) ke alur di tingkat tinggi. Seni membuat kondisi melibatkan lebih banyak detail daripada yang dibahas dalam topik ini. Untuk mengetahui detailnya, lihat Ringkasan variabel alur dan Kondisi dengan variabel alur.
Melampirkan kebijakan ke alur
Edge dilengkapi dengan berbagai jenis kebijakan standar untuk menerapkan keamanan, mengelola traffic, dan memanipulasi pesan. Selain itu, kebijakan memungkinkan Anda menambahkan kode kustom Anda sendiri untuk menyesuaikan pemrosesan pesan sepenuhnya.
Contoh:
- Lampirkan kebijakan Keamanan OAuth ke PreFlow permintaan ProxyEndpoint. Karena PreFlow permintaan ProxyEndpoint adalah alur pertama dalam pipeline, Anda dapat langsung menolak permintaan jika melanggar kebijakan keamanan.
- Lampirkan kebijakan konversi JSON ke XML ke PostFlow respons TargetEndpoint untuk mengonversi respons dari JSON ke XML.
- Lampirkan kebijakan JavaScript ke Alur Bersyarat ProxyEndpoint untuk mengeksekusi kode JavaScript guna memproses permintaan
Setelah Anda membuat alur bersyarat, alur tersebut akan tersedia untuk lampiran kebijakan. Setelah alur dipilih, klik ikon + Langkah di diagram permintaan atau respons untuk menambahkan kebijakan baru atau yang sudah ada ke alur.
Dengan melampirkan kebijakan ke alur yang dipilih, Anda mengonfigurasi proxy API untuk menerapkan kebijakan Kuota hanya untuk permintaan yang dibuat ke URI alur dan kombinasi kata kerja tersebut. Misalnya, jika Anda melampirkan kebijakan ke alur learn dalam permintaan, XML berikut akan dibuat dalam tampilan kode editor proxy:
<ProxyEndpoint name="default"> ... <Flow name="issue"> <Description/> <Request> <Step> <Name>Quota-2</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition> </Flow> ... </ProxyEndpoint>
Dalam konfigurasi ini, jika permintaan GET masuk di proxy API dengan pola URI .../issue/** (/issue/ dengan apa pun di URI setelah garis miring depan terakhir), kuota akan diterapkan pada panggilan API tersebut.
Tentang alur bersyarat
Setiap kebijakan yang dilampirkan ke PreFlow atau PostFlow selalu dieksekusi. Namun, kebijakan dalam alur bersyarat hanya dieksekusi jika kondisi alur bernilai benar (true).
Selama pemrosesan permintaan dan respons, hanya satu alur kondisional yang dieksekusi per segmen, yaitu alur pertama yang kondisinya dievaluasi menjadi benar. Artinya, Anda dapat memiliki satu alur kondisional yang dijalankan sebagai bagian dari setiap:
- Pipeline permintaan ProxyEndpoint
- Pipeline permintaan TargetEndpoint
- Pipeline respons ProxyEndpoint
- Pipeline respons TargetEndpoint
Video: Tonton video singkat untuk mempelajari alur bersyarat lebih lanjut.
Misalnya, definisi ProxyEndpoint berikut menunjukkan alur kondisional yang dijalankan oleh ProxyEndpoint pada permintaan HTTP GET
apa pun ke proxy API:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>request.verb="GET"</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
Perhatikan bahwa kondisi mereferensikan variabel alur request.verb. Variabel alur adalah referensi bernama yang menyimpan informasi status yang terkait dengan transaksi API yang diproses oleh Edge. Edge menentukan banyak variabel status yang dapat Anda referensikan.
Layanan RESTful adalah kumpulan resource API. Resource API adalah fragmen jalur URI
yang mengidentifikasi beberapa entitas yang dapat diakses developer dengan memanggil API Anda. Misalnya, jika backend layanan Anda menyediakan laporan cuaca dan prakiraan cuaca, API Anda mungkin menentukan dua alur kondisional yang dipetakan ke resource API tersebut: /reports
dan /forecasts
. Jika panggilan API menyertakan salah satu resource tersebut di URL, kondisi akan bernilai true (benar) dan logika yang dikaitkan ke alur kondisional akan dijalankan.
Kemudian, developer aplikasi akan mengakses resource Anda dengan membuat permintaan ke URL dalam bentuk:
http://myAPIs.myCo.com/weather/reports
atau:
http://myAPIs.myCo.com/weather/forecasts
Di proxy API, Anda dapat menentukan alur kondisional yang sesuai dengan resource tertentu:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition> <Request/> <Response/> </Flow> <Flow name="Flow-2"> <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
Dalam contoh ini, Anda mereferensikan variabel alur proxy.pathsuffix
,
yang berisi bagian akhiran URL yang digunakan untuk mengakses proxy API. Selanjutnya, Anda dapat melampirkan kebijakan yang berbeda ke alur kondisional untuk setiap resource.
Menambahkan alur bersyarat
Dalam contoh singkat ini, Anda menyiapkan alur yang hanya dieksekusi jika pesan permintaan adalah HTTP GET.
Untuk menambahkan alur kondisional, pilih tab Develop di API proxy builder.
Klik ikon + di endpoint yang diinginkan.
Formulir Alur Bersyarat Baru memungkinkan Anda memberi nama alur dan mengonfigurasi kondisi. Dalam
contoh berikut, Anda menambahkan kondisi sederhana yang mengevaluasi HTTP pesan permintaan untuk
kata kerja GET
(bukan PUT
, POST
, dll.) di URI mana pun setelah jalur dasar.
(Pelajari cara membuat pernyataan kondisional dalam Variabel dan kondisi flow.)
Alur baru, yang disebut Flow-1, kini muncul di menu Navigator.
Sekarang, amati konfigurasi XML untuk ProxyEndpoint. Pilih Flow-1 di menu Navigator.
Anda akan melihat konfigurasi berikut.
<PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Request/> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition> </Flow> </Flows> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow>
Langkah berikutnya
Topik berikut memberikan detail selengkapnya tentang cara membuat kondisi dan menggunakan variabel: