Referensi konfigurasi flow

Halaman ini berlaku untuk Apigee dan Apigee Hybrid.

Lihat dokumentasi Apigee Edge.

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 elemen konfigurasi alur:

Hierarki Elemen

Contoh berikut menunjukkan hierarki elemen konfigurasi flow 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. Setiap elemen ini dijelaskan secara mendetail 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 ini untuk menentukan eksekusi PraFlow, Alur Bersyarat, PostFlow, dan PostClientFlow.

<Condition>

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

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

Anda dapat menerapkan kondisi ke langkah tertentu atau ke seluruh alur, bergantung 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 kondisi dalam <Step> bernilai benar (true), Apigee akan mengeksekusi langkah tersebut. Jika kondisi bernilai salah (false), Apigee akan melewati langkah ini.

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

Sintaksis

Elemen <Condition> menggunakan sintaksis berikut:

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

Dengan keterangan:

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

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

operator
Konstruksi yang menentukan cara evaluasi kondisi Anda. Operator umum 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 lengkap, lihat Operator di referensi Kondisi.

"value"
Nilai yang digunakan untuk mengevaluasi properti variabel flow. Umumnya, ini berjenis dasar seperti bilangan bulat atau string. Misalnya 200 atau /cat. Nilainya dapat mencakup karakter pengganti, seperti tanda bintang dan karakter lainnya untuk pencocokan pola, seperti yang dijelaskan dalam Pencocokan pola dengan kondisional.

Contoh 1

Contoh berikut memeriksa apakah properti verb dari variabel alur request 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 menjalankan kebijakan Log-Request-OK.

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 kepada Anda sendiri atau developer lain. Deskripsi tidak dapat dilihat 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 menetapkan tujuan flow:

<!-- 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>

Menentukan serangkaian langkah kustom yang dijalankan Apigee.

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

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

Elemen <Flows> dapat berisi beberapa elemen <Flow>, masing-masing dengan kondisi dan langkah-langkahnya sendiri. Jika ada beberapa elemen <Flow>, Apigee hanya mengeksekusi elemen pertama yang tidak memiliki kondisi atau kondisi bernilai benar (true).

Anda dapat menentukan flow default yang selalu dieksekusi (jika tidak ada flow kondisional lainnya yang melakukannya). Bergantung pada konfigurasi proxy API Anda, konfigurasi ini dapat menjadi alat yang berguna dalam melindungi dari serangan berbahaya.

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 menunjukkan <Flow> sederhana yang selalu menjalankan kebijakan "Log-Message-OK":

<!-- 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 kondisinya sendiri:

<!-- 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>

Apigee hanya mengeksekusi satu flow dalam sebuah segmen; Apigee mengeksekusi flow pertama yang tidak memiliki kondisi, atau yang kondisinya di-resolve ke true.

Atribut

Tabel berikut menjelaskan atribut elemen <Flow>:

Atribut Jenis Deskripsi
name String (Wajib) ID unik untuk alur. Misalnya, My-Conditional-Flow-1. 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 kondisional yang diproses saat runtime. Jika pernyataan tersebut bernilai benar, alur (dan semua langkahnya) akan dieksekusi. Jika pernyataan bernilai false, alur tersebut (dan semua langkahnya) akan diabaikan.
<Description> String Memberikan deskripsi singkat tentang alurnya. Deskripsi ini tidak terlihat secara eksternal.
<Request> Objek kompleks Menentukan langkah dan kondisi untuk segmen permintaan.
<Response> Objek kompleks Menentukan langkah dan kondisi 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. Alur ini akan menjadi alur pertama yang tidak memiliki <Condition>, atau yang kondisinya di-resolve ke true.

Anda dapat menentukan flow default yang selalu dijalankan (jika tidak ada flow lain yang melakukannya). Bergantung pada konfigurasi proxy API Anda, konfigurasi ini dapat menjadi alat yang berguna dalam melindungi dari serangan berbahaya.

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 menampilkan 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>

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

Contoh 2

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

<!-- 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>

Apigee hanya mengeksekusi flow pertama dalam segmen yang kondisinya bernilai benar (true). Setelah itu, Apigee akan melewati flow yang tersisa di segmen.

Contoh 3

Contoh berikut menunjukkan <Flow> "default":

<!-- 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>

Apigee hanya mengeksekusi flow pertama dalam segmen yang kondisinya bernilai benar (true). Jika tidak ada flow kondisional yang dieksekusi, flow ketiga dalam contoh ini (tanpa kondisi) akan dijalankan.

Alur default dapat menjadi alat yang berguna dalam melindungi dari serangan berbahaya.

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 alur 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 perlu diambil dalam 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 yang ditentukan:

<!-- 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 alur (unik di dalam endpoint). Misalnya, My-PostFlow-1. 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 dijalankan selama PostFlow permintaan.
<Response> Objek kompleks Menentukan kebijakan yang akan dijalankan selama PostFlow respons.

<PostClientFlow>

Menentukan kebijakan di ProxyEndpoint yang hanya dijalankan setelah respons ditampilkan ke 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 karakter khusus lainnya. 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 dijalankan selama PostFlow respons.

<PreFlow>

Menentukan kebijakan yang akan dijalankan 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 karakter khusus lainnya. 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 dijalankan selama PreFlow permintaan.
<Response> Objek kompleks Menentukan kebijakan yang akan dijalankan selama PreFlow respons.

<Request>

Menentukan kebijakan yang akan dijalankan selama segmen permintaan flow.

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 dalam PreFlow dan PostFlow:

<!-- 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 dieksekusi.
<Step> String Menentukan kebijakan yang akan dijalankan dalam segmen permintaan.

<Response>

Menentukan kebijakan yang akan dijalankan 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, dalam PreFlow dan PostFlow:

<!-- 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 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 menjalankan kebijakan tersebut atau tidak.

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

Mungkin ada lebih dari satu langkah yang ditentukan dalam <Flow>, dan langkah-langkah tersebut dijalankan sesuai urutan yang ditetapkan dalam XML alur.

Langkah-langkah tanpa kondisi selalu dijalankan. Langkah-langkah dengan kondisi hanya akan dijalankan jika kondisi tersebut bernilai true (benar). Jika kondisi bernilai salah (false), Apigee akan melewati 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 saja ada beberapa langkah dalam sebuah <Flow>.

Semua elemen turunan <Step> bersifat opsional.

Contoh 1

Contoh berikut menampilkan 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 saat selama segmen permintaan. Langkah dengan kondisi hanya akan dijalankan jika permintaannya berupa "GET" selama segmen respons.

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 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 pernyataan bernilai true (benar), Apigee akan mengeksekusi langkah tersebut. Jika pernyataan bernilai salah (false), Apigee akan melewati langkah ini.
<Name> String Menentukan ID kebijakan yang akan dijalankan dalam alur saat ini.