Referensi konfigurasi flow

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

Bagian ini menyediakan informasi referensi tentang elemen XML yang Anda gunakan untuk mendefinisikan Alur proxy API.

Hierarki & sintaksis

Contoh berikut menunjukkan hierarki elemen dan sintaksis konfigurasi flow elemen:

Hierarki Elemen

Contoh berikut menunjukkan hierarki elemen konfigurasi alur dalam Elemen <ProxyEndpoint> dan <TargetEndpoint>:

<ProxyEndpoint | TargetEndpoint>
    <PreFlow>
          <Request>
                <Step>
                    <Condition>
                    <Name>
          <Response>
                <Step>
                    <Condition>
                    <Name>
          <Description>
    <Flows>
          <Flow>
                <Description>
                <Condition>
                <Request>
                      <Step>
                          
                <Response>
                      <Step>
                          
          <Description>
    <PostFlow>
          <Request>
                <Step>
                    
          <Response>
                <Step>
                    
          <Description>
    <PostClientFlow> (<ProxyEndpoint> only)
          <Response>
                
          <Description>

      // Additional configuration elements

</ProxyEndpoint | TargetEndpoint>

Sintaksis

Contoh berikut menunjukkan sintaksis untuk elemen konfigurasi alur. Tiap-tiap elemen tersebut dijelaskan secara rinci di bagian berikut:

<!-- ProxyEndpoint flow configuration file -->
<ProxyEndpoint ... >
  ...
  <PreFlow name="flow_name">
    <Description>flow_description</Description>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PreFlow>
  <Flows name="flow_name">
    <Flow name="conditional_flow_name">
      <Description>flow_description</Description>
      <Condition>property operator "value"</Condition>
      <Request>
        <Step>
          <Condition>property operator "value"</Condition>
          <Name>policy_name</Name>
        </Step>
        ...
      </Request>
      <Response>
        <Step>
          <Condition>property operator "value"</Condition>
          <Name>policy_name</Name>
        </Step>
        ...
      </Response>
    </Flow>
  </Flows>
  <PostFlow name="flow_name">
    <Description>flow_description</Description>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PostFlow>
  <PostClientFlow name="flow_name">
    <Description>flow_description</Description>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PostClientFlow>
  ...
</ProxyEndpoint>

<!-- TargetEndpoint flow configuration file -->
<TargetEndpoint ... >
  ...
  <PreFlow name="flow_name">
    <Description>flow_description</Description>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PreFlow>
  <Flows name="flow_name">
    <Flow name="conditional_flow_name">
      <Description>flow_description</Description>
      <Condition>property operator "value"</Condition>
      <Request>
        <Step>
          <Condition>property operator "value"</Condition>
          <Name>policy_name</Name>
        </Step>
        ...
      </Request>
      <Response>
        <Step>
          <Condition>property operator "value"</Condition>
          <Name>policy_name</Name>
        </Step>
        ...
      </Response>
    </Flow>
    ...
  </Flows>
  <PostFlow name="flow_name">
    <Description>flow_description</Description>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </PostFlow>
  ...
</TargetEndpoint>

Anda menggunakan elemen-elemen ini untuk menentukan PreFlow, Alur Bersyarat, PostFlow, dan PostClientFlow dalam proses eksekusi.

<Condition>

Menentukan pernyataan yang diproses saat runtime. Jika pernyataan bernilai true, maka langkah atau alur yang terkait dengan kondisi tersebut akan dieksekusi. Jika bernilai salah (false), maka langkah atau alur diabaikan.

Jenis String
Elemen Induk <Flow>
<Step>
Elemen Turunan Tidak ada

Anda dapat menerapkan kondisi ke langkah tertentu atau ke seluruh flow, tergantung pada apakah Anda menempatkan elemen dalam elemen <Flow> atau <Step>:

// Condition can apply to just one step:        // Or to the flow:
<Flows>                                         <Flows>
  <Flow>                                          <Flow>
    <Step>                                          <Condition>
      <Condition>                                   <Step>
      <Name>                                          <Name>
      ...                                             ...
    ...                                             ...
  ...                                             ...
</Flows>                                        </Flows>

Jika sebuah kondisi dalam <Step> bernilai benar (true), Edge akan mengeksekusi langkah tersebut. Jika kondisi mengevaluasi ke false, Edge akan mengabaikan langkah ini.

Jika sebuah kondisi dalam <Flow> bernilai benar (true), Edge akan memproses semua langkah dalam alur. Jika kondisi bernilai false (salah), Edge melewati seluruh alur.

Sintaksis

Elemen <Condition> menggunakan sintaksis berikut:

<Condition>property operator "value"</Condition>

Dengan keterangan:

property
Properti variabel flow yang ingin Anda gunakan dalam . Misalnya, variabel alur request memiliki properti bernama path dan content. Untuk menggunakannya dalam suatu kondisi, Anda menentukan flow_variable[dot]property_name:
request.path
request.content

Untuk daftar lengkap variabel alur dan propertinya, lihat Referensi variabel flow.

operator
Konstruksi yang menentukan cara kondisi Anda dievaluasi. Umum operator meliputi:
>     greater than           <=    less than or equal to
<     less than              >=    greater than or equal to
=     equals                 &&    and
!=    not equals             ||    or

~~    JavaRegex
~     Matches
/~    MatchesPath

Untuk daftar lengkapnya, lihat Operator di Referensi kondisi.

"value"
Nilai yang digunakan untuk mengevaluasi properti variabel flow. Ini biasanya adalah jenis dasar seperti bilangan bulat atau string. Misalnya, 200 atau "/cat". Nilainya bisa menyertakan karakter pengganti, seperti tanda bintang dan karakter lain untuk pencocokan pola, seperti dijelaskan dalam Pencocokan pola dengan kondisional.

Contoh 1

Contoh berikut memeriksa apakah verb variabel flow request propertinya adalah "GET":

<!-- api-platform/reference/examples/flow-segments/condition-1.xml -->
<ProxyEndpoint name="default">
  <PreFlow name="my-preFlows">
    <Description>My first PreFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
  </PreFlow>
  ...
</ProxyEndpoint>

Jika permintaannya adalah "GET", contoh ini akan mengeksekusi permintaan "Log-Request-OK" lebih lanjut.

Contoh 2

Contoh berikut memeriksa kode respons:

<!-- api-platform/reference/examples/flow-segments/condition-2.xml -->
<ProxyEndpoint name="default">
  <PreFlow name="my-preFlows">
    <Description>My first PreFlow</Description>
    <Response>
      <Step>
        <Condition>response.status.code LesserThanOrEquals 300</Condition>
        <Name>Log-Response-OK</Name>
      </Step>
      <Step>
        <Condition>response.status.code GreaterThan 300</Condition>
        <Name>Log-Response-NOT-OK</Name>
      </Step>
    </Response>
  </PreFlow>
  ...
</ProxyEndpoint>

Bergantung pada nilai kode, kebijakan yang berbeda akan dijalankan.

Atribut

Elemen <Condition> tidak memiliki atribut.

Elemen Turunan

Elemen <Condition> tidak memiliki elemen turunan.

<Description>

Menjelaskan alur dalam istilah yang dapat dibaca manusia. Gunakan elemen ini untuk memberikan informasi tentang alurnya ke diri sendiri atau pengembang lainnya. Deskripsi tidak terlihat secara eksternal.

Jenis String
Elemen Induk <Flow>
<PreFlow>
<PostFlow>
Elemen Turunan Tidak ada

Sintaksis

Elemen <Description> menggunakan sintaksis berikut:

<Description>flow_description</Description>

Contoh

Contoh berikut menunjukkan elemen <Description> yang menentukan tujuan {i>flow<i} (alur):

<!-- api-platform/reference/examples/flow-segments/description-1.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-conditional-flows">
    <Flow name="reports">
      <Request>
        <Description>Based on the path suffix, determine which flow to use</Description>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

Atribut

Elemen <Description> tidak memiliki atribut.

Elemen Turunan

Elemen <Description> tidak memiliki elemen turunan.

<Flow>

Mendefinisikan serangkaian langkah khusus yang dijalankan Edge.

Jenis Objek kompleks
Elemen Induk <Flows>
Elemen Turunan <Condition>
<Description>
<Request>
<Response>

Anda dapat menentukan <Condition> di <Flow> secara opsional. Dalam hal ini, Edge hanya mengeksekusi langkah-langkah dalam alur jika kondisi tersebut bernilai true. Jika tidak, Edge akan melewati seluruh alur kerja.

Elemen <Flows> dapat berisi beberapa elemen <Flow>, masing-masing dengan kondisinya sendiri langkah. Jika ada beberapa elemen <Flow>, Edge hanya mengeksekusi elemen pertama yang tidak ada kondisi atau kondisi bernilai benar.

Anda dapat menentukan flow default yang selalu dijalankan (jika tidak ada alur bersyarat lainnya yang melakukannya). Bergantung pada cara proxy API Anda dikonfigurasi, hal ini bisa menjadi alat yang berguna di yang melindungi pengguna dari serangan.

Sintaksis

Elemen <Flow> menggunakan sintaksis berikut:

<Flow name="conditional_flow_name">
  <Description>flow_description</Description>
  <Condition>property operator "value"</Condition>
  <Request>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Request>
  <Response>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Response>
</Flow>

Semua elemen turunan <Flow> bersifat opsional.

Contoh 1

Contoh berikut menampilkan <Flow> sederhana yang selalu menjalankan "Log-Message-OK" kebijakan:

<!-- api-platform/reference/examples/flow-segments/flow-1.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-flow">
    <Flow>
      <Request>
        <Step>
          <Name>Log-Message-OK</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

Contoh 2

Contoh berikut menunjukkan <Flow> dengan beberapa langkah, masing-masing dengan kondisi:

<!-- api-platform/reference/examples/flow-segments/flow-2.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-conditional-flows">
    <Flow name="reports">
      <Request>
        <Description>Based on the path suffix, determine which flow to use</Description>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition>
          <Name>Verify-Auth-1</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

Contoh 3

Contoh berikut menunjukkan beberapa alur dalam Alur Bersyarat:

<!-- api-platform/reference/examples/flow-segments/flows-2.xml -->
<ProxyEndpoint name="default">
  <Flows>
    <Flow name="my-flow-1">
      <Response>
        <Step>
          <Condition>response.status.code = 200</Condition>
          <Name>Assign-Message-1</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-flow-2">
      <Response>
        <Step>
          <Condition>response.status.code >= 400</Condition>
          <Name>Assign-Message-2</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-flow-3">
      <Response>
        <Step>
          <Condition>response.status.code >= 300</Condition>
          <Name>Assign-Message-3</Name>
        </Step>
      </Response>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

Edge hanya mengeksekusi satu alur dalam satu segmen; perintah itu mengeksekusi alur pertama yang tidak memiliki suatu kondisi, atau yang kondisinya selesai menjadi benar.

Atribut

Tabel berikut menjelaskan atribut elemen <Flow>:

Atribut Jenis Deskripsi
name String (Wajib) ID unik untuk alur. Misalnya, &quot;My-Conditional-Flow-1&quot;. Nama tidak boleh berisi spasi atau karakter khusus lainnya.

Elemen Turunan

Tabel berikut menjelaskan elemen turunan <Flow>:

Elemen Turunan Jenis Deskripsi
<Condition> String Menentukan pernyataan bersyarat yang diproses saat runtime. Jika pernyataan itu mengevaluasi ke true, maka flow (dan semua langkahnya) akan dieksekusi. Jika pernyataan bernilai false, maka alur (dan semua langkahnya) akan diabaikan.
<Description> String Memberikan deskripsi singkat tentang alurnya. Deskripsi ini tidak secara eksternal terlihat.
<Request> Objek kompleks Menentukan langkah dan kondisi untuk segmen permintaan.
<Response> Objek kompleks Menentukan langkah dan ketentuan untuk segmen respons.

<Flows>

Berisi nol atau beberapa elemen <Flow>.

Jenis Objek kompleks
Elemen Induk <ProxyEndpoint>
<TargetEndpoint>
Elemen Turunan <Flow>

Jika ada beberapa elemen <Flow> dalam <Flows>, hanya satu <Flow> yang akan dieksekusi. Ini akan menjadi flow pertama yang tidak memiliki <Condition>, atau yang kondisinya diselesaikan ke true.

Anda dapat menentukan alur default yang selalu dieksekusi (jika tidak ada alur lain yang melakukannya). Bergantung pada cara proxy API Anda dikonfigurasi, hal ini bisa menjadi alat yang berguna di yang melindungi pengguna dari serangan.

Sintaksis

Elemen <Flows> menggunakan sintaksis berikut:

<Flows name="flow_name">
  <Flow name="conditional_flow_name">
    <Description>flow_description</Description>
    <Condition>property operator "value"</Condition>
    <Request>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Request>
    <Response>
      <Step>
        <Condition>property operator "value"</Condition>
        <Name>policy_name</Name>
      </Step>
      ...
    </Response>
  </Flow>
</Flows>

Semua elemen turunan <Flows> bersifat opsional.

Contoh 1

Contoh berikut menunjukkan elemen <Flows> sederhana dengan satu <Flow>:

<!-- api-platform/reference/examples/flow-segments/flows-1.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-conditional-flows">
    <Flow name="reports">
      <Request>
        <Description>Based on the path suffix, determine which flow to use</Description>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition>
          <Name>Verify-Auth-1</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

Edge menjalankan salah satu kebijakan ini berdasarkan akhiran jalur yang dikumpulkannya dari Variabel alur proxy. Jika akhiran jalur tidak cocok dengan kedua kondisi tersebut, Edge tidak menjalankan alur ini.

Contoh 2

Contoh berikut menunjukkan beberapa elemen <Flow> dalam <Flows>, masing-masing dengan elemennya sendiri <Condition>:

<!-- api-platform/reference/examples/flow-segments/flows-2.xml -->
<ProxyEndpoint name="default">
  <Flows>
    <Flow name="my-flow-1">
      <Response>
        <Step>
          <Condition>response.status.code = 200</Condition>
          <Name>Assign-Message-1</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-flow-2">
      <Response>
        <Step>
          <Condition>response.status.code >= 400</Condition>
          <Name>Assign-Message-2</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-flow-3">
      <Response>
        <Step>
          <Condition>response.status.code >= 300</Condition>
          <Name>Assign-Message-3</Name>
        </Step>
      </Response>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

Edge hanya mengeksekusi alur pertama dalam segmen yang kondisinya bernilai true. Sesudah bahwa, Edge akan melewatkan aliran yang tersisa di segmen tersebut.

Contoh 3

Contoh berikut menampilkan "default" <Flow>:

<!-- api-platform/reference/examples/flow-segments/flows-3.xml -->
<ProxyEndpoint name="default">
  <Flows>
    <Flow name="my-conditional-flow-1">
      <Response>
        <Step>
          <Condition>response.status.code = 200</Condition>
          <Name>Assign-Message-1</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-conditional-flow-2">
      <Response>
        <Step>
          <Condition>response.header.someheader = "42"</Condition>
          <Name>Assign-Message-2</Name>
        </Step>
      </Response>
    </Flow>
    <Flow name="my-default-flow">
      <Response>
        <Step>
          <Name>Assign-Message-3</Name>
        </Step>
      </Response>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

Edge hanya mengeksekusi alur pertama dalam segmen yang kondisinya bernilai true. Jika tidak ada alur bersyarat yang dieksekusi, maka alur ketiga dalam contoh ini (tanpa kondisi) akan dijalankan.

Alur {i>default<i} bisa menjadi alat yang berguna dalam yang melindungi pengguna dari serangan.

Atribut

Elemen <Flows> tidak memiliki atribut.

Elemen Turunan

Elemen <Flows> memiliki elemen turunan berikut:

Elemen Turunan Jenis Deskripsi
<Flow> Objek kompleks Alur yang menentukan satu kemungkinan rangkaian langkah dalam Alur Bersyarat.

<Name>

Menentukan ID kebijakan yang akan dijalankan dalam <Flow>.

Jenis String
Elemen Induk <Step>
Elemen Turunan Tidak ada

Sintaksis

Elemen <Name> menggunakan sintaksis berikut:

<Name>policy_name</Name>

Contoh

Contoh berikut menunjukkan dua kebijakan yang ditambahkan ke flow berdasarkan namanya:

<!-- api-platform/reference/examples/flow-segments/name-1.xml -->
<ProxyEndpoint name="default">
  <Flows name="my-conditional-flows">
    <Flow name="reports">
      <Request>
        <Description>Based on the path suffix, determine which flow to use</Description>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/reports"</Condition>
          <Name>XML-to-JSON-1</Name>
        </Step>
        <Step>
          <Condition>proxy.pathsuffix MatchesPath "/forecasts"</Condition>
          <Name>Verify-Auth-1</Name>
        </Step>
      </Request>
    </Flow>
  </Flows>
  ...
</ProxyEndpoint>

Atribut

Elemen <Name> tidak memiliki atribut.

Elemen Turunan

Elemen <Name> tidak memiliki elemen turunan.

<PostFlow>

Menentukan langkah-langkah yang harus diambil di PostFlow permintaan dan respons.

Jenis Objek kompleks
Elemen Induk <ProxyEndpoint>
<TargetEndpoint>
Elemen Turunan <Description>
<Request>
<Response>

Elemen <PostFlow> menggunakan sintaksis berikut:

Sintaksis

<PostFlow name="flow_name">
  <Description>flow_description</Description>
  <Request>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Request>
  <Response>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Response>
</PostFlow>

Contoh

Contoh berikut menunjukkan PostFlow dengan langkah-langkah untuk permintaan dan respons terdefinisi:

<!-- api-platform/reference/examples/flow-segments/postflow-1.xml -->
<ProxyEndpoint name="default">
  <PostFlow name="my-postflows">
    <Description>My first PostFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
    <Response>
      <Step>
        <Name>Set-Response-Headers</Name>
      </Step>
    </Response>
  </PostFlow>
  ...
</ProxyEndpoint>

Atribut

Tabel berikut menjelaskan atribut elemen <PostFlow>:

Atribut Jenis Deskripsi
name String ID unik untuk flow (unik di dalam endpoint). Misalnya, "My-PostFlow-1". Tujuan nilai tidak boleh berisi spasi atau karakter khusus lainnya.

Elemen Turunan

Tabel berikut menjelaskan elemen turunan <PostFlow>:

Elemen Turunan Jenis Deskripsi
<Description> String Memberikan deskripsi singkat tentang alurnya.
<Request> Objek kompleks Menentukan kebijakan yang akan dieksekusi selama PostFlow permintaan.
<Response> Objek kompleks Menentukan kebijakan yang akan dieksekusi selama PostFlow respons.

<PostClientFlow>

Menentukan kebijakan di ProxyEndpoint yang hanya dijalankan setelah respons dikembalikan klien. Kebijakan ini biasanya mencatat pesan yang terkait dengan respons.

Jenis Objek kompleks
Elemen Induk <ProxyEndpoint>
Elemen Turunan <Description>
<Response>

Sintaksis

Elemen <PostClientFlow> menggunakan sintaksis berikut:

<PostClientFlow name="flow_name">
  <Description>flow_description</Description>
  <Response>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Response>
</PostClientFlow>

Semua elemen turunan <PostClientFlow> bersifat opsional.

Contoh

Contoh berikut menunjukkan PostClientFlow sederhana yang menjalankan satu kebijakan:

<!-- api-platform/reference/examples/flow-segments/postclientflow-1.xml -->
<ProxyEndpoint name="default">
  <PostClientFlow name="my-postclientflows">
    <Description>My first PostClientFlow. Processed after the response is sent back to the client.</Description>
    <Response>
      <Step>
        <Name>Message-Logging-OK</Name>
      </Step>
    </Response>
  </PostClientFlow>
  ...
</ProxyEndpoint>

Atribut

Tabel berikut menjelaskan atribut elemen <PostClientFlow>:

Atribut Jenis Deskripsi
name String ID unik untuk alur. Nama tidak boleh berisi spasi atau khusus lainnya karakter. Misalnya, "My-PostClientFlow-1".

Elemen Turunan

Tabel berikut menjelaskan elemen turunan <PostClientFlow>:

Elemen Turunan Jenis Deskripsi
<Description> String Memberikan deskripsi singkat tentang alurnya.
<Response> Objek kompleks Menentukan kebijakan yang akan dieksekusi selama PostFlow respons.

<PreFlow>

Menentukan kebijakan yang akan dieksekusi dalam PreFlow permintaan dan respons.

Jenis Objek kompleks
Elemen Induk <ProxyEndpoint>
<TargetEndpoint>
Elemen Turunan <Description>
<Request>
<Response>

Sintaksis

Elemen <PreFlow> menggunakan sintaksis berikut:

<PreFlow name="flow_name">
  <Description>flow_description</Description>
  <Request>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Request>
  <Response>
    <Step>
      <Condition>property operator "value"</Condition>
      <Name>policy_name</Name>
    </Step>
    ...
  </Response>
</PreFlow>

Semua elemen turunan <PreFlow> bersifat opsional.

Contoh

Contoh berikut menunjukkan PreFlow dengan permintaan dan alur respons yang ditentukan:

<!-- api-platform/reference/examples/flow-segments/preflow-1.xml -->
<ProxyEndpoint name="default">
  <PreFlow name="my-preFlows">
    <Description>My first PreFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
    <Response>
      <Step>
        <Condition>response.status.code LesserThanOrEquals 300</Condition>
        <Name>Log-Response-OK</Name>
      </Step>
      <Step>
        <Condition>response.status.code GreaterThan 300</Condition>
        <Name>Log-Response-NOT-OK</Name>
      </Step>
    </Response>
  </PreFlow>
  ...
</ProxyEndpoint>

Atribut

Tabel berikut menjelaskan atribut elemen <PreFlow>:

Atribut Jenis Deskripsi
name String ID unik untuk alur. Nama tidak boleh berisi spasi atau khusus lainnya karakter. Misalnya, "My-PreFlow-1".

Elemen Turunan

Tabel berikut menjelaskan elemen turunan <PreFlow>:

Elemen Turunan Jenis Deskripsi
<Description> String Memberikan deskripsi singkat tentang alurnya.
<Request> Objek kompleks Menentukan kebijakan yang akan dieksekusi selama PreFlow permintaan.
<Response> Objek kompleks Menentukan kebijakan yang akan dieksekusi selama PreFlow respons.

<Request>

Menentukan kebijakan yang akan dieksekusi selama segmen permintaan dalam alur.

Jenis Objek kompleks
Elemen Induk <Flow>
<PreFlow>
<PostFlow>
Elemen Turunan <Condition>
<Step>

Sintaksis

Elemen <Request> menggunakan sintaksis berikut:

<Request>
  <Step>
    <Condition>property operator "value"</Condition>
    <Name>policy_name</Name>
  </Step>
  ...
</Request>

Semua elemen turunan <Request> bersifat opsional.

Contoh

Contoh berikut menunjukkan alur yang ditentukan untuk permintaan di PreFlow dan {i>PostFlow<i}:

<!-- api-platform/reference/examples/flow-segments/request-1.xml -->
<ProxyEndpoint name="default">
  <PreFlow name="my-preFlows">
    <Description>My first PreFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
  </PreFlow>
  <PostFlow name="my-postflows">
    <Description>My first PostFlow</Description>
    <Request>
      <Step>
        <Condition>request.verb = "GET"</Condition>
        <Name>Log-Request-OK</Name>
      </Step>
    </Request>
  </PostFlow>
  ...
</ProxyEndpoint>

Atribut

Elemen <Request> tidak memiliki atribut.

Elemen Turunan

Tabel berikut menjelaskan elemen turunan <Request>:

Elemen Turunan Jenis Deskripsi
<Condition> Objek kompleks Menentukan apakah langkah-langkah dalam segmen permintaan dijalankan.
<Step> String Menentukan kebijakan yang akan dijalankan dalam segmen permintaan.

<Response>

Menentukan kebijakan yang akan dieksekusi selama segmen respons alur.

Jenis Objek kompleks
Elemen Induk <Flow>
<PreFlow>
<PostClientFlow>
<PostFlow>
Elemen Turunan <Condition>
<Step>

Sintaksis

Elemen <Response> menggunakan sintaksis berikut:

<Response>
  <Step>
    <Condition>property operator "value"</Condition>
    <Name>policy_name</Name>
  </Step>
  ...
</Response>

Semua elemen turunan <Response> bersifat opsional.

Contoh

Contoh berikut menunjukkan alur yang ditentukan untuk respons, baik di PreFlow dan {i>PostFlow<i}:

<!-- api-platform/reference/examples/flow-segments/response-1.xml -->
<ProxyEndpoint name="default">
    <PreFlow name="my-preFlows">
        <Description>My first PreFlow</Description>
        <Response>
            <Step>
                <Condition>response.status.code LesserThanOrEquals 300</Condition>
                <Name>Log-Response-OK</Name>
            </Step>
            <Step>
                <Condition>response.status.code GreaterThan 300</Condition>
                <Name>Log-Response-NOT-OK</Name>
            </Step>
        </Response>
    </PreFlow>
    <PostFlow name="my-postflows">
        <Description>My first PostFlow</Description>
        <Response>
            <Step>
                <Name>Set-Response-Headers</Name>
            </Step>
        </Response>
    </PostFlow>
  ...
</ProxyEndpoint>

Atribut

Elemen <Response> tidak memiliki atribut.

Elemen Turunan

Tabel berikut menjelaskan elemen turunan <Response>:

Elemen Turunan Jenis Deskripsi
<Condition> String Menentukan apakah langkah-langkah dalam segmen respons akan dijalankan.
<Step> String Menentukan kebijakan yang akan dijalankan dalam segmen respons.

<Step>

Menentukan kebijakan yang akan dijalankan dan (secara opsional) kondisi yang menentukan apakah akan dijalankan kebijakan tersebut.

Jenis Objek kompleks
Elemen Induk <Request>
<Response>
Elemen Turunan <Condition>
<Name>

Mungkin ada lebih dari satu langkah yang ditentukan di <Flow>, dan langkah-langkah tersebut dijalankan di urutannya ditentukan dalam XML flow.

Langkah-langkah tanpa kondisi akan selalu dijalankan. Langkah-langkah dengan suatu kondisi hanya dijalankan jika kondisi tersebut akan dievaluasi ke true. Jika hasil evaluasi kondisi adalah false, Edge akan mengabaikan langkah ini.

Sintaksis

Elemen <Step> menggunakan sintaksis berikut:

<Step>
  <Condition>property operator "value"</Condition>
  <Name>policy_name</Name>
</Step>

Hanya boleh ada satu <Condition> dan satu <Name> per <Step>, tetapi bisa ada beberapa langkah dalam <Flow>.

Semua elemen turunan <Step> bersifat opsional.

Contoh 1

Contoh berikut menunjukkan satu langkah dengan kondisi dan satu langkah tanpa kondisi:

<!-- api-platform/reference/examples/flow-segments/step-1.xml -->
<ProxyEndpoint name="default">
  <PostFlow name="my-postflows">
      <Description>My first PostFlow</Description>
      <Request>
          <Step>
              <Condition>request.verb = "GET"</Condition>
              <Name>Log-Request-OK</Name>
          </Step>
      </Request>
      <Response>
          <Step>
              <Name>Set-Response-Headers</Name>
          </Step>
      </Response>
  </PostFlow>
  ...
</ProxyEndpoint>

Langkah tanpa kondisi akan dijalankan setiap kali selama segmen permintaan. Langkah dengan kondisi hanya akan dijalankan jika permintaannya adalah "GET" saat merespons segmen data.

Contoh 2

Contoh berikut menunjukkan beberapa langkah dalam satu segmen:

<!-- api-platform/reference/examples/flow-segments/step-2.xml -->
<ProxyEndpoint name="default">
    <PostFlow name="PostFlow">
        <Response>
            <Step>
                <Name>Assign-Message-1</Name>
            </Step>
            <Step>
                <Name>Assign-Message-2</Name>
            </Step>
        </Response>
    </PostFlow>
  ...
</ProxyEndpoint>

Langkah-langkah tanpa kondisi akan selalu dijalankan.

Atribut

Elemen <Step> tidak memiliki atribut.

Elemen Turunan

Tabel berikut menjelaskan elemen turunan <Step>:

Elemen Turunan Jenis Deskripsi
<Condition> String Menentukan pernyataan kondisional untuk langkah yang diproses saat runtime. Jika bernilai benar, kemudian Edge mengeksekusi langkah. Jika pernyataan bernilai false, maka Edge akan melewati langkah itu.
<Name> String Menentukan ID kebijakan yang akan dijalankan dalam alur saat ini.