Halaman ini berlaku untuk Apigee dan Apigee Hybrid.
Lihat dokumentasi
Apigee Edge.
Bagian ini memberikan informasi referensi tentang elemen XML yang Anda gunakan untuk menentukan alur proxy API.
Hierarki & sintaksis
Contoh berikut menunjukkan hierarki elemen dan sintaksis elemen konfigurasi alur:
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>
EventFlow<Response>
<Step>
<Description>
<PostClientFlow>
(<ProxyEndpoint> only)<Response>
<Description>
// Additional configuration elements </ProxyEndpoint | TargetEndpoint>
Sintaks
Contoh berikut menunjukkan sintaksis untuk elemen konfigurasi alur. Setiap elemen ini dijelaskan secara mendetail di bagian selanjutnya:
<!-- 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 PreFlow, Conditional Flow, PostFlow, EventFlow, dan PostClientFlow.
<Condition>
Menentukan pernyataan yang diproses saat runtime. Jika pernyataan bernilai benar, maka langkah atau alur yang terkait dengan kondisi tersebut akan dieksekusi. Jika pernyataan bernilai 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 di 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, Apigee akan menjalankan langkah tersebut. Jika kondisi
dievaluasi sebagai salah, Apigee akan melewati langkah tersebut.
Jika kondisi dalam <Flow>
bernilai benar, Apigee akan memproses semua langkah dalam alur. Jika
kondisi bernilai salah, Apigee akan melewati seluruh alur.
Sintaks
Elemen <Condition>
menggunakan sintaksis berikut:
<Condition>property operator "value"</Condition>
Dengan:
- property
- Properti variabel alur yang ingin Anda gunakan dalam
kondisi. Misalnya, variabel alur
request
memiliki properti bernamapath
dancontent
. Untuk menggunakannya dalam kondisi, Anda harus menentukan flow_variable[dot]property_name:request.path request.content
Untuk mengetahui daftar lengkap variabel alur dan propertinya, lihat Referensi variabel alur.
- operator
- Konstruk 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 dalam Referensi kondisi.
- "value"
- Nilai yang digunakan untuk mengevaluasi properti variabel alur. Ini biasanya berupa
jenis dasar seperti bilangan bulat atau string. Misalnya
200
atau/cat
. Nilai dapat mencakup karakter pengganti, seperti tanda bintang dan karakter lain untuk pencocokan pola, seperti yang dijelaskan dalam Pencocokan pola dengan kondisi.
Contoh 1
Contoh berikut memeriksa apakah properti verb
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 permintaan 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 alur kepada diri Anda atau developer lain. Deskripsi tidak terlihat secara eksternal.
Jenis | String |
Elemen Induk |
<Flow> <PreFlow> <PostFlow> |
Elemen Turunan | Tidak ada |
Sintaks
Elemen <Description>
menggunakan sintaksis berikut:
<Description>flow_description</Description>
Contoh
Contoh berikut menunjukkan elemen <Description>
yang menentukan tujuan 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>
Menentukan serangkaian langkah kustom yang dieksekusi Apigee.
Jenis | Objek kompleks |
Elemen Induk |
<Flows> |
Elemen Turunan |
<Condition> <Description> <Request> <Response> |
Anda dapat secara opsional menentukan <Condition>
pada <Flow>
. Dalam hal ini, Apigee hanya menjalankan
langkah-langkah dalam alur jika kondisi bernilai benar. Jika tidak, Apigee akan melewati seluruh
alur.
Elemen <Flows>
dapat berisi beberapa elemen <Flow>
, yang masing-masing memiliki kondisi
dan langkah-langkahnya sendiri. Jika ada beberapa elemen <Flow>
, Apigee hanya akan mengeksekusi elemen pertama yang
tidak memiliki kondisi atau kondisi yang bernilai benar.
Anda dapat menentukan alur default yang selalu dieksekusi (jika tidak ada alur bersyarat lainnya). Bergantung pada cara konfigurasi proxy API Anda, hal ini dapat menjadi alat yang berguna untuk melindungi dari serangan berbahaya.
Sintaks
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, yang masing-masing memiliki
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 alur dalam segmen; Apigee mengeksekusi alur pertama yang tidak memiliki kondisi, atau yang kondisinya diselesaikan menjadi benar.
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 bersyarat yang diproses saat runtime. Jika pernyataan bernilai benar, alur (dan semua langkahnya) akan dieksekusi. Jika pernyataan dievaluasi sebagai salah, maka alur (dan semua langkahnya) akan diabaikan. |
<Description> |
String | Memberikan deskripsi singkat tentang alur. Deskripsi ini tidak dapat dilihat secara eksternal. |
<Request> |
Objek kompleks | Menentukan langkah-langkah dan kondisi untuk segmen permintaan. |
<Response> |
Objek kompleks | Menentukan langkah-langkah dan kondisi untuk segmen respons. |
<Flows>
Berisi nol atau lebih 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 diselesaikan
menjadi benar.
Anda dapat menentukan alur default yang selalu dieksekusi (jika tidak ada alur lain yang dieksekusi). Bergantung pada cara konfigurasi proxy API Anda, hal ini dapat menjadi alat yang berguna untuk melindungi dari serangan berbahaya.
Sintaks
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>
Apigee menjalankan salah satu kebijakan ini berdasarkan akhiran jalur yang dikumpulkan dari variabel alur
proxy
. Jika akhiran jalur tidak cocok dengan salah satu kondisi, maka
Apigee tidak akan mengeksekusi 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 menjalankan alur pertama dalam segmen yang kondisinya dievaluasi sebagai benar. Setelah itu, Apigee akan melewati alur yang tersisa dalam 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 menjalankan alur pertama dalam segmen yang kondisinya dievaluasi sebagai benar. Jika tidak ada alur kondisional yang dieksekusi, maka alur ketiga dalam contoh ini (tanpa kondisi) akan dieksekusi.
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 |
Sintaks
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 harus dilakukan di PostFlow permintaan dan respons.
Jenis | Objek kompleks |
Elemen Induk |
<ProxyEndpoint> <TargetEndpoint> |
Elemen Turunan |
<Description> <Request> <Response> |
Elemen <PostFlow>
menggunakan sintaksis berikut:
Sintaks
<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 dalam endpoint). Misalnya,
My-PostFlow-1 . Nilai
tidak boleh menyertakan spasi atau karakter khusus lainnya. |
Elemen Turunan
Tabel berikut menjelaskan elemen turunan <PostFlow>
:
Elemen Turunan | Jenis | Deskripsi |
---|---|---|
<Description> |
String | Memberikan deskripsi singkat tentang alur. |
<Request> |
Objek kompleks | Menentukan kebijakan yang akan dijalankan selama PostFlow permintaan. |
<Response> |
Objek kompleks | Menentukan kebijakan yang akan dijalankan selama PostFlow respons. |
<EventFlow>
Menentukan langkah-langkah yang harus dilakukan di EventFlow
. EventFlow
digunakan untuk mendukung streaming peristiwa yang dikirim server. Untuk
informasi selengkapnya, lihat Streaming peristiwa yang dikirim server.
Jenis | Objek kompleks |
Elemen Induk |
<TargetEndpoint> |
Elemen Turunan |
<Description> <Response> |
Elemen EventFlow
menggunakan sintaksis berikut:
Sintaks
<EventFlow name="flow_name" content-type="text/event-stream">> <Description>flow_description</Description> <Response> <Step> <Name>policy_name</Name> </Step> </Response> </EventFlow>
Contoh
Contoh berikut menunjukkan EventFlow:
<TargetEndpoint name="default"> <EventFlow name="EF-1" content-type="text/event-stream"> <Response> <Step> <Name>Raise-Fault-Cred-Invalid</Name> <Condition>fault.name equals "invalid_access_token"</Condition> </Step> </Response> </EventFlow> <HTTPTargetConnection> </TargetEndpoint></pre>
Atribut
Tabel berikut menjelaskan atribut elemen EventFlow:
Atribut | Jenis | Deskripsi |
---|---|---|
name |
String | ID unik untuk alur (unik dalam endpoint). Misalnya,
My-EventFlow-1 . Nilai
tidak boleh menyertakan spasi atau karakter khusus lainnya. |
content-type |
String | (Wajib) Harus ditetapkan ke: content-type="text/event-stream" |
Elemen Turunan
Tabel berikut menjelaskan elemen turunan EventFlow:
Elemen Turunan | Jenis | Deskripsi |
---|---|---|
<Description> |
String | Memberikan deskripsi singkat tentang alur. |
<Response> |
Objek kompleks | Menentukan kebijakan yang akan dijalankan selama EventFlow respons. |
<PostClientFlow>
Menentukan kebijakan di ProxyEndpoint yang hanya dieksekusi setelah respons ditampilkan ke klien. Kebijakan ini biasanya mencatat pesan yang terkait dengan respons.
Jenis | Objek kompleks |
Elemen Induk |
<ProxyEndpoint> |
Elemen Turunan |
<Description> <Response> |
Sintaks
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 menyertakan 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 alur. |
<Response> |
Objek kompleks | Menentukan kebijakan yang akan dijalankan selama PostFlow respons. |
<PreFlow>
Menentukan kebijakan yang akan dijalankan di PreFlow permintaan dan respons.
Jenis | Objek kompleks |
Elemen Induk |
<ProxyEndpoint> <TargetEndpoint> |
Elemen Turunan |
<Description> <Request> <Response> |
Sintaks
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 alur permintaan dan 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 menyertakan 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 alur. |
<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 alur.
Jenis | Objek kompleks |
Elemen Induk |
<Flow> <PreFlow> <PostFlow> |
Elemen Turunan |
<Step> |
Sintaks
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 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 |
---|---|---|
<Step> |
String | Menentukan kebijakan yang akan dijalankan dalam segmen permintaan. Jenis anak ini dapat muncul beberapa kali. |
<Response>
Menentukan kebijakan yang akan dijalankan selama segmen respons alur.
Jenis | Objek kompleks |
Elemen Induk |
<Flow> <PreFlow> <PostClientFlow> <PostFlow> |
Elemen Turunan |
<Step> |
Sintaks
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 maupun 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 |
---|---|---|
<Step> |
String | Menentukan kebijakan yang akan dijalankan dalam segmen respons. Jenis anak ini dapat muncul beberapa kali. |
<Step>
Menentukan kebijakan yang akan dijalankan dan (opsional) kondisi yang menentukan apakah akan menjalankan kebijakan tersebut.
Jenis | Objek kompleks |
Elemen Induk |
<Request> <Response> |
Elemen Turunan |
<Condition> <Name> |
Ada lebih dari satu langkah yang ditentukan dalam <Flow>
, dan langkah-langkah tersebut dijalankan dalam
urutan yang ditentukan dalam XML alur.
Langkah tanpa kondisi akan selalu dijalankan. Langkah-langkah dengan kondisi hanya dijalankan jika kondisi bernilai benar. Jika kondisi bernilai salah, Apigee akan melewati langkah tersebut.
Sintaks
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 boleh 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 dieksekusi setiap kali selama segmen permintaan. Langkah dengan kondisi hanya akan dijalankan jika permintaan adalah "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 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 bersyarat untuk langkah yang diproses saat runtime. Jika pernyataan bernilai benar, Apigee akan mengeksekusi langkah tersebut. Jika pernyataan dievaluasi ke salah (false), Apigee akan melewati langkah tersebut. |
<Name> |
String | Menentukan ID kebijakan yang akan dijalankan dalam alur saat ini. |