คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
ส่วนนี้จะให้ข้อมูลอ้างอิงเกี่ยวกับองค์ประกอบ XML ที่คุณใช้เพื่อกำหนดโฟลว์พร็อกซี API
ลำดับชั้นและไวยากรณ์
ตัวอย่างต่อไปนี้แสดงลำดับชั้นขององค์ประกอบและไวยากรณ์ของการกำหนดค่าโฟลว์
ลำดับชั้นขององค์ประกอบ
ตัวอย่างต่อไปนี้แสดงลำดับชั้นขององค์ประกอบการกำหนดค่าโฟลว์ภายในองค์ประกอบ <ProxyEndpoint> และ <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>ไวยากรณ์
ตัวอย่างต่อไปนี้แสดงไวยากรณ์ขององค์ประกอบการกำหนดค่าโฟลว์ เราจะอธิบายรายละเอียดของแต่ละองค์ประกอบเหล่านี้ในส่วนต่อไปนี้
<!-- 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>คุณใช้องค์ประกอบเหล่านี้เพื่อกำหนดการดำเนินการ PreFlow, Conditional Flow, PostFlow และ PostClientFlow
<Condition>
กำหนดคำสั่งที่ประมวลผลที่รันไทม์ หากคำสั่งประเมินเป็น จริง ระบบจะเรียกใช้ขั้นตอนหรือโฟลว์ที่เชื่อมโยงกับเงื่อนไข หากคำสั่ง ประเมินเป็นเท็จ ระบบจะไม่สนใจขั้นตอนหรือโฟลว์
| ประเภท | สตริง |
| องค์ประกอบหลัก | <Flow><Step> |
| องค์ประกอบย่อย | ไม่มี |
คุณจะใช้เงื่อนไขกับขั้นตอนที่เฉพาะเจาะจงหรือทั้งโฟลว์ก็ได้ ทั้งนี้ขึ้นอยู่กับว่าคุณวางองค์ประกอบไว้ในองค์ประกอบ <Flow> หรือ <Step>
// Condition can apply to just one step: // Or to the flow:<Flows><Flows><Flow><Flow><Step><Condition><Condition><Step><Name><Name>... ... ... ... ... ... </Flows> </Flows>
หากเงื่อนไขภายใน <Step> ประเมินเป็นจริง Edge จะดำเนินการตามขั้นตอนนั้น หากเงื่อนไข
ประเมินค่าเป็นเท็จ Edge จะข้ามขั้นตอนนี้
หากเงื่อนไขภายใน <Flow> ประเมินเป็นจริง Edge จะประมวลผลขั้นตอนทั้งหมดในโฟลว์ หาก
เงื่อนไขประเมินเป็นเท็จ Edge จะข้ามโฟลว์ทั้งหมด
ไวยากรณ์
องค์ประกอบ <Condition> ใช้ไวยากรณ์ต่อไปนี้
<Condition>property operator "value"</Condition>
สถานที่:
- property
- พร็อพเพอร์ตี้ตัวแปรโฟลว์ที่ต้องการใช้ใน
เงื่อนไข เช่น ตัวแปรโฟลว์
requestมีพร็อพเพอร์ตี้ชื่อpathและcontentหากต้องการใช้ในเงื่อนไข ให้ระบุ flow_variable[จุด]property_name ดังนี้request.path request.content
ดูรายการตัวแปรโฟลว์และพร็อพเพอร์ตี้ทั้งหมดได้ที่ ข้อมูลอ้างอิงตัวแปรโฟลว์
- operator
- โครงสร้างที่กำหนดวิธีประเมินเงื่อนไข โอเปอเรเตอร์ที่ใช้กันทั่วไป
มีดังนี้
> greater than <= less than or equal to < less than >= greater than or equal to = equals && and != not equals || or ~~ JavaRegex ~ Matches /~ MatchesPath
ดูรายการทั้งหมดได้ที่ตัวดำเนินการใน การอ้างอิงเงื่อนไข
- "value"
- ค่าที่ใช้ประเมินพร็อพเพอร์ตี้ตัวแปรโฟลว์ โดยทั่วไปจะเป็นประเภทพื้นฐาน เช่น จำนวนเต็มหรือสตริง เช่น 200 หรือ "/cat" ค่าอาจมี ไวลด์การ์ด เช่น เครื่องหมายดอกจันและอักขระอื่นๆ สำหรับการจับคู่รูปแบบ ตามที่อธิบายไว้ใน การจับคู่รูปแบบด้วยเงื่อนไข
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้จะตรวจสอบว่าพร็อพเพอร์ตี้ verb ของตัวแปรโฟลว์ request คือ "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>
หากคำขอเป็น "GET" ตัวอย่างนี้จะดำเนินการตามนโยบาย "Log-Request-OK"
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้จะตรวจสอบโค้ดตอบกลับ
<!-- 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>
ระบบจะใช้นโยบายที่แตกต่างกันโดยขึ้นอยู่กับค่าของรหัส
Attributes
องค์ประกอบ <Condition> ไม่มีแอตทริบิวต์
องค์ประกอบย่อย
องค์ประกอบ <Condition> ไม่มีองค์ประกอบย่อย
<Description>
อธิบายโฟลว์ในรูปแบบที่มนุษย์อ่านได้ ใช้องค์ประกอบนี้เพื่อให้ข้อมูลเกี่ยวกับโฟลว์แก่ตัวคุณเองหรือนักพัฒนาซอฟต์แวร์คนอื่นๆ รายละเอียดดังกล่าวจะไม่แสดงต่อภายนอก
| ประเภท | สตริง |
| องค์ประกอบหลัก | <Flow><PreFlow><PostFlow> |
| องค์ประกอบย่อย | ไม่มี |
ไวยากรณ์
องค์ประกอบ <Description> ใช้ไวยากรณ์ต่อไปนี้
<Description>flow_description</Description>
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ <Description> ที่ระบุวัตถุประสงค์ของโฟลว์
<!-- 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>
Attributes
องค์ประกอบ <Description> ไม่มีแอตทริบิวต์
องค์ประกอบย่อย
องค์ประกอบ <Description> ไม่มีองค์ประกอบย่อย
<Flow>
กำหนดชุดขั้นตอนที่กำหนดเองซึ่ง Edge จะดำเนินการ
| ประเภท | ออบเจ็กต์ที่ซับซ้อน |
| องค์ประกอบหลัก | <Flows> |
| องค์ประกอบย่อย | <Condition><Description><Request><Response> |
คุณระบุ <Condition> ใน <Flow> ได้ (ไม่บังคับ) ในกรณีนี้ Edge จะดำเนินการตามขั้นตอนในโฟลว์ก็ต่อเมื่อเงื่อนไขประเมินเป็นจริงเท่านั้น ไม่เช่นนั้น Edge จะข้ามโฟลว์ทั้งหมด
องค์ประกอบ <Flows> สามารถมีองค์ประกอบ <Flow> หลายรายการ โดยแต่ละรายการมีเงื่อนไขและขั้นตอนของตัวเอง
เมื่อมีองค์ประกอบ <Flow> หลายรายการ Edge จะเรียกใช้เฉพาะองค์ประกอบแรกที่ไม่มีเงื่อนไขหรือเงื่อนไขประเมินค่าเป็นจริง
คุณสามารถกําหนดโฟลว์เริ่มต้นที่จะทํางานเสมอ (หากไม่มีโฟลว์แบบมีเงื่อนไขอื่นๆ) เครื่องมือนี้อาจมีประโยชน์ในการป้องกันการโจมตีที่เป็นอันตราย ทั้งนี้ขึ้นอยู่กับวิธีที่กำหนดค่าพร็อกซี API
ไวยากรณ์
องค์ประกอบ <Flow> ใช้ไวยากรณ์ต่อไปนี้
<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>องค์ประกอบย่อยทั้งหมดของ <Flow> เป็นค่าที่ไม่บังคับ
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้แสดง <Flow> แบบง่ายที่จะเรียกใช้นโยบาย "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>
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้แสดง <Flow> ที่มีหลายขั้นตอน โดยแต่ละขั้นตอนมีเงื่อนไขของตัวเอง
<!-- 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>
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้แสดงโฟลว์หลายรายการในโฟลว์แบบมีเงื่อนไข
<!-- 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 จะเรียกใช้โฟลว์เพียง 1 รายการในกลุ่ม โดยจะเรียกใช้โฟลว์แรกที่ไม่มีเงื่อนไข หรือมีเงื่อนไขที่ประเมินเป็นจริง
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Flow>
| แอตทริบิวต์ | ประเภท | คำอธิบาย |
|---|---|---|
name |
สตริง | (ต้องระบุ) รหัสที่ไม่ซ้ำกันสำหรับโฟลว์ เช่น "My-Conditional-Flow-1" ชื่อต้องไม่มีการเว้นวรรคหรือสัญลักษณ์พิเศษอื่นๆ |
องค์ประกอบย่อย
ตารางต่อไปนี้จะอธิบายองค์ประกอบย่อยของ <Flow>
| องค์ประกอบย่อย | ประเภท | คำอธิบาย |
|---|---|---|
<Condition> |
สตริง | กำหนดคำสั่งแบบมีเงื่อนไขซึ่งประมวลผลที่รันไทม์ หากคำสั่งประเมินเป็น จริง ระบบจะดำเนินการโฟลว์ (และขั้นตอนทั้งหมด) หากข้อความประเมินเป็นเท็จ ระบบจะไม่สนใจโฟลว์ (และขั้นตอนทั้งหมด) |
<Description> |
สตริง | ระบุคำอธิบายสั้นๆ เกี่ยวกับโฟลว์ คำอธิบายนี้จะไม่แสดงต่อภายนอก |
<Request> |
ออบเจ็กต์ที่ซับซ้อน | ระบุขั้นตอนและเงื่อนไขสำหรับกลุ่มคำขอ |
<Response> |
ออบเจ็กต์ที่ซับซ้อน | ระบุขั้นตอนและเงื่อนไขสำหรับกลุ่มการตอบกลับ |
<Flows>
มีองค์ประกอบ <Flow> ตั้งแต่ 0 รายการขึ้นไป
| ประเภท | ออบเจ็กต์ที่ซับซ้อน |
| องค์ประกอบหลัก | <ProxyEndpoint><TargetEndpoint> |
| องค์ประกอบย่อย | <Flow> |
หากมีองค์ประกอบ <Flow> หลายรายการภายใน <Flows> ระบบจะเรียกใช้ <Flow> เพียงรายการเดียว ซึ่งจะเป็นโฟลว์แรกที่ไม่มี <Condition> หรือมีเงื่อนไขที่
เป็นจริง
คุณสามารถกำหนดโฟลว์เริ่มต้นที่จะทำงานเสมอ (หากไม่มีโฟลว์อื่นทำงาน) เครื่องมือนี้อาจมีประโยชน์ในการป้องกันการโจมตีที่เป็นอันตราย ทั้งนี้ขึ้นอยู่กับวิธีที่กำหนดค่าพร็อกซี API
ไวยากรณ์
องค์ประกอบ <Flows> ใช้ไวยากรณ์ต่อไปนี้
<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>องค์ประกอบย่อยทั้งหมดของ <Flows> เป็นค่าที่ไม่บังคับ
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ <Flows> แบบง่ายที่มี <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 จะใช้นโยบายใดนโยบายหนึ่งเหล่านี้ตามคำต่อท้ายของเส้นทางที่รวบรวมจากตัวแปรโฟลว์
proxy หากคำต่อท้ายของเส้นทางไม่ตรงกับเงื่อนไขใดๆ Edge จะไม่ดำเนินการโฟลว์นี้
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้แสดงองค์ประกอบ <Flow> หลายรายการภายใน <Flows> โดยแต่ละรายการมี <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 จะเรียกใช้เฉพาะโฟลว์แรกในกลุ่มที่มีเงื่อนไขเป็นจริง หลังจากนั้น Edge จะข้ามโฟลว์ที่เหลือในกลุ่ม
ตัวอย่างที่ 3
ตัวอย่างต่อไปนี้แสดง <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>
Edge จะเรียกใช้เฉพาะโฟลว์แรกในกลุ่มที่มีเงื่อนไขเป็นจริง หากไม่มีโฟลว์แบบมีเงื่อนไขใดทำงาน โฟลว์ที่ 3 ในตัวอย่างนี้ (ไม่มีเงื่อนไข) จะทำงาน
โฟลว์เริ่มต้นอาจเป็นเครื่องมือที่มีประโยชน์ในการ ป้องกันการโจมตี ที่เป็นอันตราย
Attributes
องค์ประกอบ <Flows> ไม่มีแอตทริบิวต์
องค์ประกอบย่อย
องค์ประกอบ <Flows> มีองค์ประกอบย่อยต่อไปนี้
| องค์ประกอบย่อย | ประเภท | คำอธิบาย |
|---|---|---|
<Flow> |
ออบเจ็กต์ที่ซับซ้อน | โฟลว์ที่กำหนดชุดขั้นตอนที่เป็นไปได้ชุดหนึ่งภายในโฟลว์แบบมีเงื่อนไข |
<Name>
ระบุรหัสของนโยบายที่จะดำเนินการภายใน <Flow>
| ประเภท | สตริง |
| องค์ประกอบหลัก | <Step> |
| องค์ประกอบย่อย | ไม่มี |
ไวยากรณ์
องค์ประกอบ <Name> ใช้ไวยากรณ์ต่อไปนี้
<Name>policy_name</Name>
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงนโยบาย 2 รายการที่เพิ่มลงในโฟลว์ตามชื่อ
<!-- 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>
Attributes
องค์ประกอบ <Name> ไม่มีแอตทริบิวต์
องค์ประกอบย่อย
องค์ประกอบ <Name> ไม่มีองค์ประกอบย่อย
<PostFlow>
กำหนดขั้นตอนที่จะดำเนินการใน PostFlow ของคำขอและการตอบกลับ
| ประเภท | ออบเจ็กต์ที่ซับซ้อน |
| องค์ประกอบหลัก | <ProxyEndpoint><TargetEndpoint> |
| องค์ประกอบย่อย | <Description><Request><Response> |
องค์ประกอบ <PostFlow> ใช้ไวยากรณ์ต่อไปนี้
ไวยากรณ์
<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>ตัวอย่าง
ตัวอย่างต่อไปนี้แสดง PostFlow ที่มีขั้นตอนสำหรับทั้งคำขอและการตอบกลับที่กำหนดไว้
<!-- 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>
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <PostFlow>
| แอตทริบิวต์ | ประเภท | คำอธิบาย |
|---|---|---|
name |
สตริง | รหัสที่ไม่ซ้ำกันสำหรับโฟลว์ (ไม่ซ้ำกันภายในอุปกรณ์ปลายทาง) เช่น "My-PostFlow-1" ค่า ต้องไม่มีการเว้นวรรคหรืออักขระพิเศษอื่นๆ |
องค์ประกอบย่อย
ตารางต่อไปนี้จะอธิบายองค์ประกอบย่อยของ <PostFlow>
| องค์ประกอบย่อย | ประเภท | คำอธิบาย |
|---|---|---|
<Description> |
สตริง | ระบุคำอธิบายสั้นๆ เกี่ยวกับโฟลว์ |
<Request> |
ออบเจ็กต์ที่ซับซ้อน | กำหนดนโยบายที่จะดำเนินการในระหว่าง PostFlow ของคำขอ |
<Response> |
ออบเจ็กต์ที่ซับซ้อน | กำหนดนโยบายที่จะดำเนินการในระหว่าง PostFlow ของการตอบกลับ |
<PostClientFlow>
กำหนดนโยบายใน ProxyEndpoint ที่จะดำเนินการหลังจากส่งการตอบกลับไปยัง ไคลเอ็นต์แล้วเท่านั้น โดยปกติแล้วนโยบายเหล่านี้จะบันทึกข้อความที่เกี่ยวข้องกับการตอบกลับ
| ประเภท | ออบเจ็กต์ที่ซับซ้อน |
| องค์ประกอบหลัก | <ProxyEndpoint> |
| องค์ประกอบย่อย | <Description><Response> |
ไวยากรณ์
องค์ประกอบ <PostClientFlow> ใช้ไวยากรณ์ต่อไปนี้
<PostClientFlow name="flow_name">
<Description>flow_description</Description>
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>
</PostClientFlow>องค์ประกอบย่อยทั้งหมดของ <PostClientFlow> เป็นค่าที่ไม่บังคับ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดง PostClientFlow อย่างง่ายที่เรียกใช้นโยบายเดียว
<!-- 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>
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <PostClientFlow>
| แอตทริบิวต์ | ประเภท | คำอธิบาย |
|---|---|---|
name |
สตริง | รหัสที่ไม่ซ้ำกันสำหรับโฟลว์ ชื่อต้องไม่มีการเว้นวรรคหรือสัญลักษณ์พิเศษอื่นๆ เช่น "My-PostClientFlow-1" |
องค์ประกอบย่อย
ตารางต่อไปนี้จะอธิบายองค์ประกอบย่อยของ <PostClientFlow>
| องค์ประกอบย่อย | ประเภท | คำอธิบาย |
|---|---|---|
<Description> |
สตริง | ระบุคำอธิบายสั้นๆ เกี่ยวกับโฟลว์ |
<Response> |
ออบเจ็กต์ที่ซับซ้อน | กำหนดนโยบายที่จะดำเนินการในระหว่าง PostFlow ของการตอบกลับ |
<PreFlow>
กำหนดนโยบายที่จะดำเนินการใน PreFlow ของคำขอและการตอบกลับ
| ประเภท | ออบเจ็กต์ที่ซับซ้อน |
| องค์ประกอบหลัก | <ProxyEndpoint><TargetEndpoint> |
| องค์ประกอบย่อย | <Description><Request><Response> |
ไวยากรณ์
องค์ประกอบ <PreFlow> ใช้ไวยากรณ์ต่อไปนี้
<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>องค์ประกอบย่อยทั้งหมดของ <PreFlow> เป็นค่าที่ไม่บังคับ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดง PreFlow ที่กำหนดขั้นตอนคำขอและการตอบกลับ
<!-- 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>
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <PreFlow>
| แอตทริบิวต์ | ประเภท | คำอธิบาย |
|---|---|---|
name |
สตริง | รหัสที่ไม่ซ้ำกันสำหรับโฟลว์ ชื่อต้องไม่มีการเว้นวรรคหรือสัญลักษณ์พิเศษอื่นๆ เช่น "My-PreFlow-1" |
องค์ประกอบย่อย
ตารางต่อไปนี้จะอธิบายองค์ประกอบย่อยของ <PreFlow>
| องค์ประกอบย่อย | ประเภท | คำอธิบาย |
|---|---|---|
<Description> |
สตริง | ระบุคำอธิบายสั้นๆ เกี่ยวกับโฟลว์ |
<Request> |
ออบเจ็กต์ที่ซับซ้อน | กำหนดนโยบายที่จะดำเนินการในระหว่าง PreFlow ของคำขอ |
<Response> |
ออบเจ็กต์ที่ซับซ้อน | กำหนดนโยบายที่จะดำเนินการใน PreFlow ของการตอบกลับ |
<Request>
กำหนดนโยบายที่จะดำเนินการในระหว่างส่วนคำขอของโฟลว์
| ประเภท | ออบเจ็กต์ที่ซับซ้อน |
| องค์ประกอบหลัก | <Flow><PreFlow><PostFlow> |
| องค์ประกอบย่อย | <Condition><Step> |
ไวยากรณ์
องค์ประกอบ <Request> ใช้ไวยากรณ์ต่อไปนี้
<Request>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Request>องค์ประกอบย่อยทั้งหมดของ <Request> เป็นค่าที่ไม่บังคับ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงโฟลว์ที่กำหนดไว้สำหรับคำขอทั้งใน PreFlow และ 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>
Attributes
องค์ประกอบ <Request> ไม่มีแอตทริบิวต์
องค์ประกอบย่อย
ตารางต่อไปนี้จะอธิบายองค์ประกอบย่อยของ <Request>
| องค์ประกอบย่อย | ประเภท | คำอธิบาย |
|---|---|---|
<Condition> |
ออบเจ็กต์ที่ซับซ้อน | กำหนดว่าจะดำเนินการตามขั้นตอนภายในกลุ่มคำขอหรือไม่ |
<Step> |
สตริง | ระบุนโยบายที่จะดำเนินการภายในกลุ่มคำขอ |
<Response>
กำหนดนโยบายที่จะดำเนินการในระหว่างส่วนการตอบกลับของโฟลว์
| ประเภท | ออบเจ็กต์ที่ซับซ้อน |
| องค์ประกอบหลัก | <Flow><PreFlow><PostClientFlow><PostFlow> |
| องค์ประกอบย่อย | <Condition><Step> |
ไวยากรณ์
องค์ประกอบ <Response> ใช้ไวยากรณ์ต่อไปนี้
<Response>
<Step>
<Condition>property operator "value"</Condition>
<Name>policy_name</Name>
</Step>
...
</Response>องค์ประกอบย่อยทั้งหมดของ <Response> เป็นค่าที่ไม่บังคับ
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงโฟลว์ที่กำหนดไว้สำหรับการตอบกลับ ทั้งใน PreFlow และ 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>
Attributes
องค์ประกอบ <Response> ไม่มีแอตทริบิวต์
องค์ประกอบย่อย
ตารางต่อไปนี้จะอธิบายองค์ประกอบย่อยของ <Response>
| องค์ประกอบย่อย | ประเภท | คำอธิบาย |
|---|---|---|
<Condition> |
สตริง | กำหนดว่าจะดำเนินการขั้นตอนภายในกลุ่มการตอบกลับหรือไม่ |
<Step> |
สตริง | ระบุนโยบายที่จะดำเนินการภายในกลุ่มการตอบกลับ |
<Step>
ระบุนโยบายที่จะดำเนินการและ (ไม่บังคับ) เงื่อนไขที่กำหนดว่าจะดำเนินการ นโยบายนั้นหรือไม่
| ประเภท | ออบเจ็กต์ที่ซับซ้อน |
| องค์ประกอบหลัก | <Request><Response> |
| องค์ประกอบย่อย | <Condition><Name> |
<Flow> สามารถกำหนดขั้นตอนได้มากกว่า 1 ขั้นตอน และระบบจะดำเนินการตามขั้นตอนตามลำดับที่กำหนดไว้ใน XML ของโฟลว์
ขั้นตอนที่ไม่มีเงื่อนไขจะทำงานเสมอ ขั้นตอนที่มีเงื่อนไขจะดำเนินการก็ต่อเมื่อเงื่อนไข ได้รับการประเมินเป็น "จริง" เท่านั้น หากเงื่อนไขประเมินเป็นเท็จ Edge จะข้ามขั้นตอน
ไวยากรณ์
องค์ประกอบ <Step> ใช้ไวยากรณ์ต่อไปนี้
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
<Step> 1 รายการจะมี <Condition> และ <Name> ได้อย่างละ 1 รายการเท่านั้น แต่ <Flow> 1 รายการจะมีหลายขั้นตอนได้
องค์ประกอบย่อยทั้งหมดของ <Step> เป็นค่าที่ไม่บังคับ
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้แสดงขั้นตอนหนึ่งที่มีเงื่อนไขและอีกขั้นตอนหนึ่งที่ไม่มีเงื่อนไข
<!-- 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>
ขั้นตอนที่ไม่มีเงื่อนไขจะดำเนินการทุกครั้งในระหว่างกลุ่มคำขอ ขั้นตอน ที่มีเงื่อนไขจะดำเนินการเมื่อคำขอเป็น "GET" ในระหว่างการตอบกลับ เท่านั้น
ตัวอย่างที่ 2
ตัวอย่างต่อไปนี้แสดงหลายขั้นตอนในกลุ่มเดียว
<!-- 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>
ขั้นตอนที่ไม่มีเงื่อนไขจะทำงานเสมอ
Attributes
องค์ประกอบ <Step> ไม่มีแอตทริบิวต์
องค์ประกอบย่อย
ตารางต่อไปนี้จะอธิบายองค์ประกอบย่อยของ <Step>
| องค์ประกอบย่อย | ประเภท | คำอธิบาย |
|---|---|---|
<Condition> |
สตริง | กำหนดคำสั่งแบบมีเงื่อนไขสำหรับขั้นตอนที่ประมวลผลที่รันไทม์ หากคำสั่ง ประเมินเป็นจริง Edge จะดำเนินการตามขั้นตอน หากข้อความประเมินเป็น เท็จ Edge จะข้ามขั้นตอน |
<Name> |
สตริง | ระบุรหัสของนโยบายที่จะเรียกใช้ในโฟลว์ปัจจุบัน |