Kebijakan FlowCallout

Anda sedang melihat dokumentasi Apigee Edge.
Buka Dokumentasi Apigee X.
info

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 FlowInfo 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 kebijakan Flow callout, Anda dapat memanggil alur bersama tersebut dari beberapa proxy API.
  • Anda dapat memanggil satu alur bersama dari yang lain dengan menerapkan kebijakan Flow callout dari dalam alur bersama alur kerja.

Contoh

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 FlowInfo kebijakan 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 Flow callout 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 nilai kunci 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 FlowKeterangan berikut, yang digunakan dalam proxy API, memanggil alur bersama sebelumnya ke 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 FlowInfo ke alur bersama. Di sini, kebijakan FlowInfo memanggil alur bersama yang dirancang untuk melakukan fungsi penanganan string. Alur bersama mencakup JavaScript yang menyambungkan inputnya, huruf kecil untuk inputnya, atau keduanya. Kebijakan FlowInfo menentukan parameter yang menentukan {i>input<i}, {i>output<i}, dan apa yang harus dilakukan dengan input tersebut.

  1. Kebijakan FlowInfo String-Handler 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). Elemen Parameter 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>
    
  2. Alur bersama default berikut menyertakan kebijakan JavaScript SharedStringFunctions yang dijalankan saat alur bersama dipanggil dari kebijakan FlowInfo.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. Di alur bersama, kebijakan JavaScript SharedStringFunctions berikut menentukan file JavaScript SharedStringFunctions.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>
  4. JavaScript berikut, SharedStringFunctions.js, dieksekusi dari Kebijakan JavaScript SharedStringFunctions. Skrip ini mengambil nilai dari variabel yang dibuat dari elemen Parameter kebijakan Flowcallout.

    // 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);
  5. Eksekusi mengalir kembali dari kebijakan JavaScript, ke alur bersama, lalu ke Kebijakan FlowCall 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>

&lt;FlowCallout&gt; atribut

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">

Tabel berikut menjelaskan atribut yang umum untuk semua elemen induk kebijakan:

Atribut Deskripsi Default Ketersediaan
name

Nama internal kebijakan. Nilai atribut name dapat berisi huruf, angka, spasi, tanda hubung, garis bawah, dan titik. Nilai ini tidak boleh melebihi 255 karakter.

Secara opsional, gunakan elemen <DisplayName> untuk memberi label kebijakan di editor proxy UI pengelolaan dengan nama natural language yang berbeda.

T/A Wajib
continueOnError

Tetapkan ke false untuk menampilkan error saat kebijakan gagal. Diharapkan untuk sebagian besar kebijakan.

Setel ke true agar eksekusi alur dapat dilanjutkan bahkan setelah kebijakan gagal.

salah Opsional
enabled

Setel ke true untuk menerapkan kebijakan.

Setel ke false untuk menonaktifkan kebijakan. Kebijakan ini tidak akan ditegakkan meskipun tetap terikat pada alur.

true Opsional
async

Atribut ini tidak digunakan lagi.

salah Tidak digunakan lagi

&lt;DisplayName&gt; elemen

Gunakan selain atribut name untuk memberi label kebijakan di editor proxy UI dengan nama natural language yang berbeda.

<DisplayName>Policy Display Name</DisplayName>
Default

T/A

Jika Anda menghapus elemen ini, nilai atribut name kebijakan akan menjadi data

Ketersediaan Opsional
Jenis String

&lt;SharedFlowBundle&gt; elemen

Menentukan nama alur bersama yang akan dipanggil. Nilai elemen ini harus sama dengan nilai 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 diisi.

Jenis T/A

Atribut

Tidak ada.

&lt;Parameter&gt; 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 harus 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 FlowKeterangan hanya terlihat selama eksekusi alur bersama.

Sintaksis

Anda dapat menggunakan elemen ini dengan salah satu bentuk sintaksis berikut. Perhatikan bahwa ketika 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 Flowcallout String-Handler 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 diisi.

Jenis T/A

Atribut

Atribut Deskripsi Default Ketersediaan Jenis
nama Nama variabel runtime yang akan dibuat dengan parameter ini. Tidak ada. Wajib diisi. String
referensi

Variabel berisi nilai yang akan digunakan pada runtime. Abaikan atribut ini jika Anda yang menetapkan nilai literal yang akan digunakan.

Tidak ada. Opsional. String
nilai 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

&lt;Parameters&gt; elemen

Menentukan kumpulan elemen &lt;Parameter&gt; untuk diteruskan sebagai variabel ke dalam alur bersama yang dipanggil oleh parameter ini lebih lanjut.

Sintaksis

<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

apigee.edge.sharedflow.name

Cakupan: Selama eksekusi alur bersama
Jenis: String
Izin: Baca

Nilai atribut nama alur bersama.

apigee.edge.flowhook.name

Cakupan: Selama eksekusi alur bersama yang disertakan ke alur menarik.
Jenis: String
Izin: Baca

Nama flow hook.

Referensi error

Bagian ini menjelaskan kode kesalahan dan pesan error yang ditampilkan serta variabel kesalahan yang disetel oleh Edge saat kebijakan ini memicu error. Informasi ini penting untuk diketahui apakah Anda mengembangkan aturan fault untuk menangani kesalahan. Untuk mempelajari lebih lanjut, lihat Yang perlu Anda ketahui tentang error kebijakan dan Menangani kesalahan.

Error runtime

Error ini dapat terjadi saat kebijakan dieksekusi.

Kode kesalahan Status HTTP Penyebab Perbaiki
flow.SharedFlowNotFound 500 Alur bersama tidak ada, atau alur bersama ada tetapi tidak di-deploy.

Error saat deployment

T/A

Topik terkait