Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
Gunakan kebijakan FlowCallout
untuk memanggil alur bersama dari proxy API atau yang lainnya
alur bersama.
Di alur bersama, Anda membuat urutan langkah yang dapat Anda gunakan kembali saat runtime dari beberapa
tempat. Langkah-langkah ini diterapkan sebagai kebijakan, seperti dalam proxy API. Kebijakan FlowCallout
memberi Anda cara untuk memanggil alur bersama dari proxy API dan alur bersama lainnya.
Ini bekerja seperti panggilan fungsi dalam bahasa pemrograman tradisional.
- Misalnya, bayangkan Anda telah membangun alur bersama dengan fitur keamanan seperti
Verifikasi kunci API, validasi token OAuth, dan perlindungan ekspresi reguler. Alur bersama ini
mewakili konvensi Anda untuk cara memeriksa permintaan masuk.
Dengan menggunakan kebijakan
FlowCallout
, Anda dapat memanggil alur bersama tersebut dari beberapa proxy API. - Anda dapat memanggil satu alur bersama dari alur bersama lainnya dengan menerapkan kebijakan
FlowCallout
dari dalam alur bersama.
Kebijakan ini merupakan Kebijakan yang dapat diperluas dan penggunaan kebijakan ini mungkin menimbulkan biaya atau implikasi penggunaan, bergantung pada lisensi Apigee Anda. Untuk mengetahui informasi tentang jenis kebijakan dan implikasi penggunaan, lihat Jenis kebijakan.
Sampel
Memverifikasi kunci API di alur bersama
Dalam contoh ini, alur bersama digunakan untuk melakukan tugas umum terkait keamanan. Di sini
bersama akan memvalidasi kunci API. Proxy API dan alur bersama lainnya dapat menggunakan
Kebijakan FlowCallout
untuk melakukan panggilan ke dalam alur bersama ini.
Definisi alur bersama berikut menyertakan kebijakan Verify-API-Key
yang dijalankan
saat alur bersama dipanggil dari kebijakan FlowCallout
di proxy API.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>Verify-API-Key</Name> </Step> </SharedFlow>
Kebijakan VerifyAPIKey
dalam alur bersama sebelumnya mengambil kunci
nilai dan memverifikasinya.
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key"> <DisplayName>Verify API Key</DisplayName> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Kebijakan FlowCallout
berikut, yang digunakan dalam proxy API, memanggil
bersama untuk memverifikasi kunci API. Paket alur bersama verify-apikey-shared
(tidak ditampilkan di sini) mengonfigurasi alur bersama dengan cara paket APIProxy mengonfigurasi proxy.
<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout"> <DisplayName>Auth Flow Callout</DisplayName> <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle> </FlowCallout>
Meneruskan parameter ke alur bersama
Contoh ini menggambarkan cara meneruskan parameter dari kebijakan FlowCallout
ke
alur bersama. Di sini, kebijakan FlowCallout
memanggil alur bersama yang didesain untuk melakukan
fungsi penanganan string. Alur bersama mencakup JavaScript yang menyambungkan inputnya,
huruf kecil untuk inputnya, atau keduanya. Kebijakan FlowCallout
menentukan parameter yang menentukan
{i>input<i}, {i>output<i}, dan apa yang
harus dilakukan dengan input tersebut.
Kebijakan
String-Handler
FlowCallout
memanggil alur bersama, meneruskan parameter yang menentukan variabel untuk menyimpan output alur bersama, alur bersama apa operasi yang digunakan, dan input apa yang akan digunakan (di sini, literal string, tetapi bisa juga berupa variabel alur). ElemenParameter
menentukan nama dan nilai variabel untuk membuat runtime. Alur bersama dapat mengambil variabel ini untuk digunakan dalam kodenya sendiri.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="operations">concatenate tolowercase</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
Alur bersama
default
berikut mencakup Kebijakan JavaScriptSharedStringFunctions
yang berjalan saat alur bersama dipanggil dari kebijakanFlowCallout
.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
Di alur bersama, kebijakan JavaScript
SharedStringFunctions
berikut menentukan file JavaScriptSharedStringFunctions.js
dengan kode yang akan dieksekusi.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="SharedStringFunctions"> <DisplayName>SharedStringFunctions</DisplayName> <Properties/> <ResourceURL>jsc://SharedStringFunctions.js</ResourceURL> </Javascript>
JavaScript berikut,
SharedStringFunctions.js
, dijalankan dari Kebijakan JavaScriptSharedStringFunctions
. Skrip ini mengambil nilai dari variabel yang dibuat dari elemen kebijakanFlowCallout
Parameter
.// Input value from the calling API proxy. var handledString = context.getVariable("input"); // Variable to use for output from this script. var outputVariable = context.getVariable("outputVariable"); // A space-separated list of things to do to the input string. // Convert to lower case to handle unintentional capitals in configuration. var operation = context.getVariable("operations").toLowerCase(); // If "lowercase" was given as an operation, convert the input to lowercase. if (operation.includes("tolowercase")) { handledString = handledString.toLowerCase(); } // If "concatenate" was given as an operation, concatenate the input. if (operation.includes("concatenate")) { handledString = handledString.replace(/\s+/g, ''); } // Assign the resulting string to the output variable specified by // the calling API proxy. context.setVariable(outputVariable, handledString);
- Eksekusi mengalir kembali dari kebijakan JavaScript, ke alur bersama, lalu ke
Kebijakan
FlowCallout
di proxy API asal.
Referensi elemen
Berikut adalah elemen dan atribut yang dapat Anda konfigurasi di kebijakan ini:
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1"> <DisplayName>Custom label used in UI</DisplayName> <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle> </FlowCallout>
<FlowCallout> atribut
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
Tabel berikut menjelaskan atribut yang sama untuk semua elemen induk kebijakan:
Atribut | Deskripsi | Default | Kehadiran |
---|---|---|---|
name |
Nama internal kebijakan. Nilai atribut Atau, gunakan elemen |
T/A | Diperlukan |
continueOnError |
Setel ke Setel ke |
false | Opsional |
enabled |
Setel ke Setel ke |
true | Opsional |
async |
Atribut ini sudah tidak digunakan lagi. |
false | Tidak digunakan lagi |
Elemen <DisplayName>
Gunakan selain atribut name
untuk memberi label kebijakan di
editor proxy UI pengelolaan dengan nama natural-language yang berbeda.
<DisplayName>Policy Display Name</DisplayName>
Default |
T/A Jika Anda menghapus elemen ini, nilai atribut |
---|---|
Kehadiran | Opsional |
Jenis | String |
<SharedFlowBundle> elemen
Menentukan nama alur bersama yang akan dipanggil. Nilai elemen ini harus sama dengan
dari atribut nama elemen <SharedFlowBundle>
target.
<SharedFlowBundle/>
Dalam contoh paling sederhana, Anda memberi nama alur bersama yang dipanggil sebagai nilai untuk ini
. Artinya, nilai elemen ini harus sama dengan name
alur bersama
nilai atribut.
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
Default | T/A |
---|---|
Kehadiran | Wajib |
Jenis | T/A |
Atribut
Tidak ada.
<Parameter> elemen
Menentukan parameter dan nilai (atau sumber nilai) yang akan diteruskan sebagai variabel ke dalam alur bersama yang dipanggil oleh variabel ini lebih lanjut.
Dengan menggunakan parameter, Anda dapat menentukan nilai (atau variabel yang berisi nilai) yang seharusnya
diteruskan ke alur bersama yang
disebut oleh kebijakan. Secara konsep mirip dengan menentukan
dalam panggilan fungsi. Seperti parameter fungsi, nilai parameter FlowCallout
dapat
bervariasi berdasarkan konteks panggilan alur bersama.
Parameter FlowCallout
hanya terlihat selama eksekusi alur bersama.
Sintaks
Anda dapat menggunakan elemen ini dengan salah satu bentuk sintaksis berikut. Perhatikan bahwa jika Anda menggunakan nilai literal, format nilai yang Anda tentukan akan bergantung pada kode yang akan menghabiskannya.
<!- A literal value in an attribute. --/> <Parameter name="parameter-name" value='parameter-value' /> <!- A reference to a variable in an attribute. --/> <Parameter name="parameter-name" ref='source-variable-name' /> <!- A literal value in the element content. --/> <Parameter name="parameter-name">parameter-value</Parameter> <!- An reference to an attribute in the element content. --/> <Parameter name="parameter-name">{source-variable-name}</Parameter>
Contoh
Kebijakan String-Handler
FlowCallout
ini meneruskan parameter yang menentukan tempat
untuk menyimpan output alur bersama dan input apa yang akan digunakan. Elemen Parameter
menentukan nama dan nilai variabel untuk membuat runtime. Alur bersama dapat mengambil
variabel-variabel ini untuk digunakan
dalam kodenya sendiri.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
Default | T/A |
---|---|
Kehadiran | Wajib |
Jenis | T/A |
Atribut
Atribut | Deskripsi | Default | Kehadiran | Jenis |
---|---|---|---|---|
name |
Nama variabel runtime yang akan dibuat dengan parameter ini. | Tidak ada | Wajib | String |
ref |
Variabel yang berisi nilai yang akan digunakan pada runtime. Abaikan atribut ini jika Anda yang menetapkan nilai literal yang akan digunakan. |
Tidak ada | Opsional | String |
value |
Nilai yang akan digunakan dalam variabel runtime yang dibuat dengan parameter ini. Hapus atribut ini jika Anda menentukan nama variabel yang seharusnya menjadi sumber nilai. | Tidak ada | Opsional | String |
<Parameters> elemen
Menentukan kumpulan elemen <Parameter> yang akan diteruskan sebagai variabel ke dalam alur bersama yang dipanggil oleh kebijakan ini.
Sintaks
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
Default | T/A |
---|---|
Kehadiran | Opsional |
Jenis | T/A |
Atribut
Tidak ada.
Skema
Variabel flow
Variabel alur memungkinkan perilaku dinamis kebijakan dan alur saat runtime, berdasarkan HTTP {i>header<i}, isi pesan, atau konteks alur. Untuk informasi selengkapnya tentang variabel Flow, lihat Referensi variabel.
Variabel | Deskripsi |
---|---|
|
Cakupan: Selama eksekusi alur bersama Nilai atribut nama alur bersama. |
|
Cakupan: Selama eksekusi alur bersama yang disertakan ke alur
menarik. Nama flow hook. |
Referensi error
Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan dan variabel kesalahan yang disetel oleh Apigee saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan kesalahan untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Hal yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.
Error runtime
Error ini dapat terjadi saat kebijakan dieksekusi.
Kode kesalahan | Status HTTP | Penyebab | Perbaikan |
---|---|---|---|
flow.SharedFlowNotFound |
500 |
Alur bersama tidak ada, atau alur bersama ada tetapi tidak di-deploy. | build |
Error saat deployment
T/A
Topik terkait
- Membuat alur bersama: Alur bersama yang dapat digunakan kembali
- Mengeksekusi alur bersama di beberapa proxy: Melampirkan flow bersama menggunakan flow hook