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