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