คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ส่วนนี้ให้ข้อมูลอ้างอิงเกี่ยวกับองค์ประกอบ 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, Flowal Flow, PostFlow และ PostClientFlow ของคุณ
<Condition>
กำหนดคำสั่งที่ประมวลผลขณะรันไทม์ หากข้อความประเมินเป็น "จริง" จะมีการดำเนินการตามขั้นตอนหรือโฟลว์ที่เชื่อมโยงกับเงื่อนไข หาก ระบบจะประเมินค่าเป็นเท็จ (false) ตามขั้นตอนหรือขั้นตอนดังกล่าว
ประเภท | สตริง |
องค์ประกอบหลัก | <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>
อย่างน้อย 1 รายการ
ประเภท | ออบเจ็กต์ที่ซับซ้อน |
องค์ประกอบหลัก | <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>
:
<!-- 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 ของโฟลว์
ขั้นตอนที่ไม่มีเงื่อนไขจะทํางานเสมอ ขั้นตอนที่มีเงื่อนไขจะทํางานต่อเมื่อเงื่อนไขนั้น ประเมินเป็น true หากเงื่อนไขประเมินได้เป็น "เท็จ" Edge จะข้ามขั้นตอนนี้
ไวยากรณ์
องค์ประกอบ <Step>
ใช้ไวยากรณ์ต่อไปนี้
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
มี <Condition>
และ <Name>
ได้เพียง 1 รายการต่อ <Step>
เท่านั้น
หลายขั้นตอนใน <Flow>
องค์ประกอบย่อยทั้งหมดของ <Step>
เป็นค่าที่ไม่บังคับ
ตัวอย่างที่ 1
ตัวอย่างต่อไปนี้แสดง 1 ขั้นตอนพร้อมเงื่อนไขและ 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 จะดำเนินการตามขั้นตอนนั้น หากข้อความประเมินเป็น false จากนั้น Edge จะข้ามขั้นตอนนี้ |
<Name> |
สตริง | ระบุรหัสของนโยบายที่จะดำเนินการในโฟลว์ปัจจุบัน |