คุณกำลังดูเอกสารประกอบของ 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, โฟลว์แบบมีเงื่อนไข, 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 โฟลว์ในกลุ่ม โดยจะดำเนินการกับโฟลว์แรกที่ไม่มีเงื่อนไข หรือกำหนดเงื่อนไขเป็น true
Attributes
ตารางต่อไปนี้อธิบายแอตทริบิวต์ขององค์ประกอบ <Flow>
แอตทริบิวต์ | Type | คำอธิบาย |
---|---|---|
name |
สตริง | (ต้องระบุ) รหัสที่ไม่ซ้ำกันสำหรับขั้นตอน เช่น "My-Conditional-Flow-1" ชื่อต้องไม่มีการเว้นวรรคหรือสัญลักษณ์พิเศษอื่นๆ |
องค์ประกอบย่อย
ตารางต่อไปนี้อธิบายองค์ประกอบย่อยของ <Flow>
องค์ประกอบย่อย | Type | คำอธิบาย |
---|---|---|
<Condition> |
สตริง | กำหนดคำสั่งแบบมีเงื่อนไขที่ประมวลผลระหว่างรันไทม์ หากคำสั่งประเมินได้เป็นจริง ระบบจะดำเนินการตามโฟลว์ (และทุกขั้นตอนของคำสั่ง) หากคำสั่งประเมินค่าได้เป็นเท็จ ระบบจะไม่สนใจโฟลว์ (และขั้นตอนทั้งหมดของคำสั่ง) |
<Description> |
สตริง | ให้คำอธิบายสั้นๆ เกี่ยวกับขั้นตอน คำอธิบายนี้จะไม่ปรากฏต่อบุคคลภายนอก |
<Request> |
ออบเจ็กต์ที่ซับซ้อน | ระบุขั้นตอนและเงื่อนไขสำหรับกลุ่มคำขอ |
<Response> |
ออบเจ็กต์ที่ซับซ้อน | ระบุขั้นตอนและเงื่อนไขสำหรับกลุ่มการตอบกลับ |
<Flows>
มีองค์ประกอบ <Flow>
0 รายการขึ้นไป
ประเภท | ออบเจ็กต์ที่ซับซ้อน |
องค์ประกอบหลัก | <ProxyEndpoint> <TargetEndpoint> |
องค์ประกอบย่อย | <Flow> |
หากมีองค์ประกอบ <Flow>
หลายรายการภายใน <Flows>
ระบบจะดำเนินการ <Flow>
เพียง 1 รายการ ซึ่งจะเป็นขั้นตอนแรกที่ไม่มี <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
หากคำต่อท้ายเส้นทางตรงกับทั้ง 2 เงื่อนไขไม่ได้ 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>
มีองค์ประกอบย่อยต่อไปนี้
องค์ประกอบย่อย | Type | คำอธิบาย |
---|---|---|
<Flow> |
ออบเจ็กต์ที่ซับซ้อน | โฟลว์ที่กำหนดชุดขั้นตอนที่เป็นไปได้ 1 ชุดภายในโฟลว์แบบมีเงื่อนไข |
<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>
แอตทริบิวต์ | Type | คำอธิบาย |
---|---|---|
name |
สตริง | รหัสที่ไม่ซ้ำกันสำหรับขั้นตอน (ไม่ซ้ำกันภายในปลายทาง) เช่น "My-PostFlow-1" ค่านี้ต้องไม่มีการเว้นวรรคหรือสัญลักษณ์พิเศษอื่นๆ |
องค์ประกอบย่อย
ตารางต่อไปนี้อธิบายองค์ประกอบย่อยของ <PostFlow>
องค์ประกอบย่อย | Type | คำอธิบาย |
---|---|---|
<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>
แอตทริบิวต์ | Type | คำอธิบาย |
---|---|---|
name |
สตริง | รหัสที่ไม่ซ้ำกันสำหรับขั้นตอน ชื่อต้องไม่มีการเว้นวรรคหรือสัญลักษณ์พิเศษอื่นๆ เช่น "My-PostClientFlow-1" |
องค์ประกอบย่อย
ตารางต่อไปนี้อธิบายองค์ประกอบย่อยของ <PostClientFlow>
องค์ประกอบย่อย | Type | คำอธิบาย |
---|---|---|
<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>
แอตทริบิวต์ | Type | คำอธิบาย |
---|---|---|
name |
สตริง | รหัสที่ไม่ซ้ำกันสำหรับขั้นตอน ชื่อต้องไม่มีการเว้นวรรคหรือสัญลักษณ์พิเศษอื่นๆ เช่น "My-PreFlow-1" |
องค์ประกอบย่อย
ตารางต่อไปนี้อธิบายองค์ประกอบย่อยของ <PreFlow>
องค์ประกอบย่อย | Type | คำอธิบาย |
---|---|---|
<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>
องค์ประกอบย่อย | Type | คำอธิบาย |
---|---|---|
<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>
องค์ประกอบย่อย | Type | คำอธิบาย |
---|---|---|
<Condition> |
สตริง | กำหนดว่าจะดำเนินการขั้นตอนต่างๆ ภายในกลุ่มการตอบกลับหรือไม่ |
<Step> |
สตริง | ระบุนโยบายที่จะดำเนินการภายในส่วนการตอบกลับ |
<Step>
ระบุนโยบายที่จะเรียกใช้ และ (ไม่บังคับ) เงื่อนไขที่กำหนดว่าจะดำเนินการตามนโยบายนั้นหรือไม่
ประเภท | ออบเจ็กต์ที่ซับซ้อน |
องค์ประกอบหลัก | <Request> <Response> |
องค์ประกอบย่อย | <Condition> <Name> |
โดยใน <Flow>
จะมีขั้นตอนมากกว่า 1 ขั้นตอน และระบบจะดำเนินการตามขั้นตอนตามลำดับที่กําหนดไว้ใน XML ของโฟลว์
ขั้นตอนที่ไม่มีเงื่อนไขจะดำเนินการเสมอ ขั้นตอนที่มีเงื่อนไขจะดำเนินการเมื่อเงื่อนไขมีค่าเป็น "จริง" เท่านั้น หากเงื่อนไขประเมินเป็น "เท็จ" Edge จะข้ามขั้นตอนดังกล่าว
ไวยากรณ์
องค์ประกอบ <Step>
ใช้ไวยากรณ์ต่อไปนี้
<Step> <Condition>property operator "value"</Condition> <Name>policy_name</Name> </Step>
มี <Condition>
ได้เพียง 1 รายการและ <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>
องค์ประกอบย่อย | Type | คำอธิบาย |
---|---|---|
<Condition> |
สตริง | กำหนดคำสั่งแบบมีเงื่อนไขสำหรับขั้นตอนที่ประมวลผลระหว่างรันไทม์ หากคำสั่งประเมินว่าเป็นจริง Edge จะดำเนินการตามขั้นตอนนี้ หากคำสั่งประเมินค่าเป็น false แล้ว Edge จะข้ามขั้นตอนดังกล่าวไป |
<Name> |
สตริง | ระบุรหัสของนโยบายที่จะดำเนินการในขั้นตอนปัจจุบัน |