คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
โฟลว์คือองค์ประกอบพื้นฐานของพร็อกซี API โฟลว์ช่วยให้คุณเขียนโปรแกรมลักษณะการทำงาน ของ API ได้โดยการกำหนดลำดับที่พร็อกซี API จะเรียกใช้นโยบายและโค้ด
ดูภาพรวมเชิงแนวคิดของโฟลว์ได้ที่ การควบคุมวิธีที่พร็อกซีทำงานด้วย โฟลว์
หัวข้อนี้อธิบายวิธีสร้างโฟลว์แบบมีเงื่อนไขและเพิ่มตรรกะ (นโยบาย) ลงในโฟลว์ในระดับสูง การสร้างเงื่อนไขต้องใช้รายละเอียดมากกว่าที่กล่าวถึงในหัวข้อนี้ ดูรายละเอียดได้ที่ภาพรวมของตัวแปรโฟลว์และเงื่อนไขที่มีตัวแปรโฟลว์
การแนบนโยบายกับโฟลว์
Edge มาพร้อมกับนโยบายที่กำหนดไว้ล่วงหน้าหลายประเภทเพื่อใช้รักษาความปลอดภัย จัดการ การรับส่งข้อมูล และจัดการข้อความ นอกจากนี้ นโยบายยังช่วยให้คุณเพิ่มโค้ดที่กำหนดเองเพื่อ ปรับแต่งการประมวลผลข้อความได้อย่างสมบูรณ์
ตัวอย่างเช่น
- แนบนโยบายการรักษาความปลอดภัย OAuth กับ request PreFlow ของ ProxyEndpoint เนื่องจาก request PreFlow ของ ProxyEndpoint เป็นโฟลว์แรกในไปป์ไลน์ คุณจึงปฏิเสธคำขอได้ทันทีหากคำขอดังกล่าวละเมิดนโยบายความปลอดภัย
- แนบนโยบายการแปลง JSON เป็น XMLกับ response PostFlow ของ TargetEndpointเพื่อแปลงการตอบสนองจาก JSON เป็น XML
- แนบนโยบาย JavaScript กับ โฟลว์แบบมีเงื่อนไขของ ProxyEndpoint เพื่อเรียกใช้โค้ด JavaScript เพื่อประมวลผลคำขอ
เมื่อสร้างโฟลว์แบบมีเงื่อนไขแล้ว คุณจะแนบนโยบายได้ เมื่อเลือกโฟลว์ แล้ว ให้คลิกไอคอน + ขั้นตอน ในไดอะแกรมคำขอหรือการตอบสนองเพื่อเพิ่มนโยบายใหม่หรือที่มีอยู่ ลงในโฟลว์


การแนบนโยบายกับโฟลว์ที่เลือกไว้จะกำหนดค่าพร็อกซี API ให้บังคับใช้นโยบาย โควต้าสำหรับคำขอที่ส่งไปยัง URI และคำกริยาของโฟลว์นั้นๆ เท่านั้น ตัวอย่างเช่น หากคุณ แนบนโยบายกับโฟลว์ learn ในคำขอ ระบบจะสร้าง XML ต่อไปนี้ในมุมมองโค้ดของเครื่องมือแก้ไขพร็อกซี
<ProxyEndpoint name="default">
...
<Flow name="issue">
<Description/>
<Request>
<Step>
<Name>Quota-2</Name>
</Step>
</Request>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
</Flow>
...
</ProxyEndpoint>ในการกำหนดค่านี้ หากคำขอ GET เข้ามาในพร็อกซี API ที่มีรูปแบบ URI เป็น .../issue/** (/issue/ ที่มีสิ่งใดก็ตามใน URI หลังจากเครื่องหมายทับสุดท้าย ) ระบบจะบังคับใช้โควต้ากับการเรียก API นั้น
เกี่ยวกับโฟลว์แบบมีเงื่อนไข
ระบบจะเรียกใช้นโยบายที่แนบกับ PreFlow หรือ PostFlow เสมอ อย่างไรก็ตาม ระบบจะเรียกใช้นโยบายในโฟลว์แบบมีเงื่อนไขก็ต่อเมื่อเงื่อนไขของโฟลว์ประเมินเป็นจริง
ในระหว่างการประมวลผลคำขอและการตอบสนอง ระบบจะเรียกใช้โฟลว์แบบมีเงื่อนไขเพียง 1 รายการต่อ เซ็กเมนต์ ซึ่งเป็นโฟลว์แรกที่เงื่อนไขประเมินเป็นจริง ซึ่งหมายความว่าคุณสามารถเรียกใช้โฟลว์แบบมีเงื่อนไข 1 รายการเป็นส่วนหนึ่งของแต่ละรายการต่อไปนี้
- ไปป์ไลน์คำขอของ ProxyEndpoint
- ไปป์ไลน์คำขอของ TargetEndpoint
- ไปป์ไลน์การตอบสนองของ ProxyEndpoint
- ไปป์ไลน์การตอบสนองของ TargetEndpoint
วิดีโอ: ดูวิดีโอสั้นๆ เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับโฟลว์แบบมีเงื่อนไข
ตัวอย่างเช่น คำจำกัดความของ ProxyEndpoint ต่อไปนี้แสดงโฟลว์แบบมีเงื่อนไขที่ ProxyEndpoint เรียกใช้
ในคำขอ HTTP GET ที่ส่งไปยังพร็อกซี API
<ProxyEndpoint name="default">
<PreFlow>
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Condition>request.verb="GET"</Condition>
<Request/>
<Response/>
</Flow>
</Flows>
<PostFlow>
<Request/>
<Response/>
</PostFlow>
...
</ProxyEndpoint>โปรดสังเกตว่าเงื่อนไขอ้างอิงถึง request.verb โฟลว์ ตัวแปร ตัวแปรโฟลว์คือการอ้างอิงที่มีชื่อซึ่งเก็บข้อมูลสถานะที่เชื่อมโยง กับธุรกรรม API ที่ Edge ประมวลผล Edge กำหนดตัวแปรสถานะจำนวนมากที่คุณอ้างอิงได้
บริการ RESTful คือคอลเล็กชันของทรัพยากร API ทรัพยากร API คือส่วนเส้นทาง URI
ที่ระบุเอนทิตีบางอย่างที่นักพัฒนาแอปเข้าถึงได้โดยการเรียก API ของคุณ ตัวอย่างเช่น หากแบ็กเอนด์ของบริการให้รายงานสภาพอากาศและการพยากรณ์อากาศ API ของคุณอาจกำหนดโฟลว์แบบมีเงื่อนไข 2 รายการที่แมปกับทรัพยากร API เหล่านั้น ได้แก่ /reports และ /forecasts เมื่อการเรียก API
มีทรัพยากรใดทรัพยากรหนึ่งใน URL เงื่อนไขจะประเมินเป็นจริงและระบบจะเรียกใช้ตรรกะ
ที่แนบกับโฟลว์แบบมีเงื่อนไข
จากนั้นนักพัฒนาแอปจะเข้าถึงทรัพยากรของคุณโดยส่งคำขอไปยัง URL ในรูปแบบต่อไปนี้
http://myAPIs.myCo.com/weather/reports
หรือ
http://myAPIs.myCo.com/weather/forecasts
ในพร็อกซี API คุณสามารถกำหนดโฟลว์แบบมีเงื่อนไขที่สอดคล้องกับทรัพยากรที่เฉพาะเจาะจง ได้
<ProxyEndpoint name="default">
<PreFlow>
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition>
<Request/>
<Response/>
</Flow>
<Flow name="Flow-2">
<Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition>
<Request/>
<Response/>
</Flow>
</Flows>
<PostFlow>
<Request/>
<Response/>
</PostFlow>
...
</ProxyEndpoint>ในตัวอย่างนี้ คุณอ้างอิงตัวแปรโฟลว์ proxy.pathsuffix
ซึ่งมีส่วนต่อท้ายของ URL ที่ใช้เข้าถึงพร็อกซี API จากนั้นคุณจะแนบ
นโยบายต่างๆ กับโฟลว์แบบมีเงื่อนไขสำหรับทรัพยากรแต่ละรายการได้
การเพิ่มโฟลว์แบบมีเงื่อนไข
ในตัวอย่างสั้นๆ นี้ คุณจะตั้งค่าโฟลว์ที่จะทำงานก็ต่อเมื่อข้อความคำขอเป็น HTTP GET
หากต้องการเพิ่มโฟลว์แบบมีเงื่อนไข ให้เลือกแท็บพัฒนา ในเครื่องมือสร้างพร็อกซี API

คลิกไอคอน + ในปลายทางที่ต้องการ

แบบฟอร์มโฟลว์แบบมีเงื่อนไขใหม่ ช่วยให้คุณตั้งชื่อโฟลว์และกำหนดค่าเงื่อนไขได้ ในตัวอย่างต่อไปนี้ คุณจะเพิ่มเงื่อนไขอย่างง่ายที่จะประเมิน HTTP ของข้อความคำขอสำหรับ
คำกริยา GET (เทียบกับ PUT, POST, ฯลฯ) ใน URI ใดก็ได้หลังจากเส้นทางฐาน

(ดูวิธีสร้างคำสั่งแบบมีเงื่อนไขใน ตัวแปรโฟลว์และ เงื่อนไข)
ตอนนี้โฟลว์ใหม่ที่ชื่อว่า Flow-1 จะปรากฏในเมนู Navigator

ตอนนี้ให้ดูการกำหนดค่า XML สำหรับ ProxyEndpoint เลือก Flow-1 ใน เมนู Navigator
คุณจะเห็นการกำหนดค่าต่อไปนี้
<PreFlow name="PreFlow">
<Request/>
<Response/>
</PreFlow>
<Flows>
<Flow name="Flow-1">
<Request/>
<Response/>
<Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
</Flow>
</Flows>
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>ขั้นตอนถัดไป
หัวข้อต่อไปนี้จะให้รายละเอียดเพิ่มเติมเกี่ยวกับการสร้างเงื่อนไขและการใช้ ตัวแปร