คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
ในฐานะนักพัฒนาซอฟต์แวร์ที่ทำงานกับ Apigee Edge กิจกรรมการพัฒนาหลักของคุณเกี่ยวข้องกับ การกำหนดค่าพร็อกซี API ที่ทำหน้าที่เป็นพร็อกซีสำหรับ API หรือบริการแบ็กเอนด์ เอกสารนี้เป็นข้อมูลอ้างอิงขององค์ประกอบการกำหนดค่าทั้งหมดที่คุณใช้ได้เมื่อสร้างพร็อกซี API
หากคุณกำลังเรียนรู้วิธีสร้างพร็อกซี API ขอแนะนำให้เริ่มต้นด้วยหัวข้อสร้างพร็อกซี API อย่างง่าย
วิธีที่พบบ่อยที่สุดในการแก้ไขการกำหนดค่าพร็อกซีมีดังนี้
- การใช้ เครื่องมือแก้ไข XML ภายใน UI ของ Edge
- ดาวน์โหลดการกำหนดค่าและแก้ไขในเครื่องตามที่อธิบายไว้ในการพัฒนาการกำหนดค่าพร็อกซีในเครื่อง
การพัฒนาการกำหนดค่าพร็อกซีในเครื่อง
คุณสามารถดาวน์โหลดการกำหนดค่าพร็อกซีเพื่อแก้ไขในเครื่องได้ เมื่อ เสร็จแล้ว ให้อัปโหลดผลลัพธ์ไปยัง Edge แนวทางนี้ช่วยให้คุณผสานรวมการกำหนดค่าพร็อกซี เข้ากับการควบคุมแหล่งที่มา การควบคุมเวอร์ชัน และเวิร์กโฟลว์ที่แชร์อื่นๆ ได้ นอกจากนี้ การกำหนดค่าพร็อกซีในเครื่องยังช่วยให้คุณใช้เครื่องมือแก้ไข XML และเครื่องมือตรวจสอบของคุณเองได้ด้วย
ส่วนนี้จะอธิบายวิธีใช้ UI เพื่อดาวน์โหลดการกำหนดค่าพร็อกซีที่มีอยู่ แก้ไข
แล้วอัปโหลดกลับไปยัง Edge เพื่อการติดตั้งใช้งาน นอกจากนี้ คุณยังใช้
apigeetool
เพื่อดาวน์โหลดและทำให้การกำหนดค่าพร็อกซีใหม่ใช้งานได้ (โดยใช้คำสั่ง fetchproxy และ
deployproxy ตามลำดับ)
วิธีแก้ไขการกำหนดค่าพร็อกซีในเครื่องโดยใช้ UI
- ดาวน์โหลดการกำหนดค่าพร็อกซีปัจจุบันใน UI ของ Edge (ในมุมมองพร็อกซี API ให้เลือกโปรเจ็กต์ > ดาวน์โหลดการแก้ไข)
- สร้างไดเรกทอรีใหม่ในเครื่องของคุณ แล้วแตกไฟล์ ZIP ที่ดาวน์โหลดมาลงในไดเรกทอรีนั้น
หากต้องการขยายไฟล์ ZIP คุณสามารถใช้ยูทิลิตี เช่น
unzipดังตัวอย่างต่อไปนี้mkdir myappdir
unzip ./my-app_app_rev3_2019_04_20.zip -d myappdirเนื้อหาที่ขยายของไฟล์ ZIP ควรมีลักษณะคล้ายกับโครงสร้างที่อธิบายไว้ใน โครงสร้างพร็อกซี API
- แก้ไขไฟล์ต้นฉบับตามที่จำเป็น ดูคำอธิบายของไฟล์ต้นฉบับในการกำหนดค่าพร็อกซีได้ที่
ไฟล์การกำหนดค่าและ
โครงสร้างไดเรกทอรีของ API Proxy
ตัวอย่างเช่น หากต้องการเปิดใช้การตรวจสอบสถานะในพร็อกซี API ให้แก้ไขไฟล์การกำหนดค่า TargetEndpoint ในไดเรกทอรี
/apiproxy/targets/ไฟล์เริ่มต้นในไดเรกทอรีนี้คือdefault.xmlแม้ว่าอาจมีไฟล์ที่มีชื่อต่างกันหากคุณใช้ เป้าหมายแบบมีเงื่อนไขในกรณีนี้ หากไม่มีไฟล์การกำหนดค่า TargetEndpoint และไดเรกทอรีของไฟล์ ให้สร้างไฟล์และไดเรกทอรี
- หลังจากแก้ไขไฟล์การกำหนดค่าพร็อกซีเสร็จแล้ว อย่าลืมบันทึกการเปลี่ยนแปลง
- เปลี่ยนเป็นไดเรกทอรีใหม่ที่คุณสร้างขึ้นเมื่อขยายไฟล์ ZIP (รูทของ
ไฟล์การกำหนดค่าที่ขยาย)
ตัวอย่างเช่น หากคุณขยายไฟล์ลงในไดเรกทอรี
/myappdirให้เปลี่ยนไปที่ไดเรกทอรีนั้น ดังตัวอย่างต่อไปนี้cd myappdir
คุณควรเปลี่ยนไปใช้ไดเรกทอรีนี้ก่อนที่จะเก็บไฟล์การกำหนดค่าพร็อกซีอีกครั้ง เนื่องจากคุณไม่ต้องการให้ไดเรกทอรี
/myappdirรวมอยู่ในไฟล์ ZIP ไดเรกทอรีระดับบนสุดในไฟล์ ZIP ต้องเป็น/apiproxy - เก็บไฟล์การกำหนดค่าพร็อกซี รวมถึงไฟล์ใหม่หรือไฟล์ที่เปลี่ยนแปลงแล้ว คุณสามารถใช้ยูทิลิตี เช่น
zipดังตัวอย่างต่อไปนี้zip my-new-proxy.zip -r .
ไดเรกทอรีระดับบนสุดในไฟล์ ZIP ต้องเป็น
/apiproxyชื่อไฟล์ ZIP ไม่มีข้อกำหนดพิเศษ เช่น คุณไม่จำเป็นต้อง เพิ่มหมายเลขการแก้ไขหรือระบุวันที่ในชื่อไฟล์ แต่การทำเช่นนี้อาจ มีประโยชน์สำหรับการแก้ไขข้อบกพร่องหรือการควบคุมแหล่งที่มา
Edge จะเพิ่มหมายเลขการแก้ไขของการกำหนดค่าพร็อกซีใหม่ให้คุณเมื่ออัปโหลด
- อัปโหลดการกำหนดค่าพร็อกซีใหม่โดยใช้ UI ของ Edge (ในมุมมองพร็อกซี API
ให้เลือกโปรเจ็กต์ > อัปโหลดการแก้ไขใหม่)
หากได้รับข้อผิดพลาด เช่น Bundle is invalid. Empty bundle. ให้ตรวจสอบว่า ไดเรกทอรีระดับบนสุดของไฟล์ ZIP คือ
/apiproxyหากไม่เป็นเช่นนั้น ให้เก็บไฟล์การกำหนดค่าพร็อกซีจากรูทของไดเรกทอรีที่ขยายแล้วอีกครั้งหลังจากอัปโหลดการกำหนดค่าพร็อกซีใหม่แล้ว Edge จะเพิ่มหมายเลขรีวิชันและ แสดงในมุมมองสรุปรีวิชัน
Edge จะไม่ติดตั้งใช้งานรีวิชันใหม่ให้คุณหลังจากที่คุณอัปโหลดด้วย UI
- ทำให้การแก้ไขใหม่ใช้งานได้
ดูข้อมูลเพิ่มเติมได้ที่บทแนะนำ: วิธีดาวน์โหลดพร็อกซีโดยใช้ UI และ Management API ในชุมชน Apigee
โครงสร้างพร็อกซี API
พร็อกซี API ประกอบด้วยการกำหนดค่าต่อไปนี้
| การกำหนดค่าพื้นฐาน | การตั้งค่าการกำหนดค่าหลักสำหรับพร็อกซี API ดูการกำหนดค่าพื้นฐาน |
| การกำหนดค่า ProxyEndpoint | การตั้งค่าสำหรับการเชื่อมต่อ HTTP ขาเข้า (จากแอปที่ขอไปยัง Apigee Edge), คำขอ และโฟลว์การตอบกลับ และการแนบนโยบาย ดู ProxyEndpoint |
| การกำหนดค่า TargetEndpoint | การตั้งค่าสำหรับการเชื่อมต่อ HTTP ขาออก (จาก Apigee Edge ไปยังบริการแบ็กเอนด์) โฟลว์คำขอและการตอบกลับ และการแนบนโยบาย ดู TargetEndpoint |
| โฟลว์ | ไปป์ไลน์คำขอและการตอบกลับ ProxyEndpoint และ TargetEndpoint ที่สามารถแนบนโยบายได้ ดูโฟลว์ |
| นโยบาย | ไฟล์การกำหนดค่าในรูปแบบ XML ที่เป็นไปตามสคีมานโยบาย Apigee Edge ดู นโยบาย |
| แหล่งข้อมูล | สคริปต์ ไฟล์ JAR และไฟล์ XSLT ที่นโยบายอ้างอิงเพื่อเรียกใช้ตรรกะที่กำหนดเอง ดู แหล่งข้อมูล |
โครงสร้างไดเรกทอรีและเนื้อหาของพร็อกซี API
ส่วนประกอบในตารางด้านบนกำหนดโดยไฟล์การกำหนดค่าในโครงสร้างไดเรกทอรีต่อไปนี้

ไฟล์การกำหนดค่าและโครงสร้าง ไดเรกทอรีของพร็อกซี API
ส่วนนี้จะอธิบายไฟล์การกำหนดค่าและโครงสร้างไดเรกทอรีของพร็อกซี API
การกำหนดค่าพื้นฐาน
/apiproxy/weatherapi.xml
การกำหนดค่าพื้นฐานสำหรับพร็อกซี API ซึ่งกำหนดชื่อของพร็อกซี API ชื่อต้องไม่ซ้ำกันภายในองค์กร
ตัวอย่างการกำหนดค่า
<APIProxy name="weatherapi"> </APIProxy>
องค์ประกอบการกำหนดค่าพื้นฐาน
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
APIProxy |
|||
name |
ชื่อของพร็อกซี API ซึ่งต้องไม่ซ้ำกันภายในองค์กร อักขระ
ที่คุณได้รับอนุญาตให้ใช้ในชื่อจะจำกัดไว้เฉพาะอักขระต่อไปนี้
A-Za-z0-9_- |
ไม่มี | ใช่ |
revision |
หมายเลขการแก้ไขของการกำหนดค่าพร็อกซี API คุณไม่จำเป็นต้องตั้งค่าหมายเลขการแก้ไขอย่างชัดเจน เนื่องจาก Apigee Edge จะติดตามการแก้ไขปัจจุบันของพร็อกซี API โดยอัตโนมัติ | ไม่มี | ไม่ |
ConfigurationVersion |
เวอร์ชันของสคีมาการกำหนดค่าพร็อกซี API ที่พร็อกซี API นี้เป็นไปตาม ปัจจุบันค่าที่รองรับมีเพียง majorVersion 4 และ minorVersion 0 การตั้งค่านี้อาจใช้ในอนาคตเพื่อเปิดใช้การพัฒนารูปแบบพร็อกซี API | 4.0 | ไม่ |
Description |
คำอธิบายแบบข้อความของพร็อกซี API หากระบุไว้ คำอธิบายจะแสดงใน UI การจัดการ Edge | ไม่มี | ไม่ |
DisplayName |
ชื่อที่ใช้งานง่ายซึ่งอาจแตกต่างจากแอตทริบิวต์ name ของ
การกำหนดค่าพร็อกซี API |
ไม่มี | ไม่ |
Policies |
รายการนโยบายในไดเรกทอรี /policies ของพร็อกซี API นี้ โดยปกติแล้ว คุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น
ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อให้มองเห็นเนื้อหาของ
พร็อกซี API |
ไม่มี | ไม่ |
ProxyEndpoints |
รายการ ProxyEndpoint ในไดเรกทอรี /proxies ของพร็อกซี API นี้ คุณ
มักจะเห็นองค์ประกอบนี้เมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge
เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อให้มองเห็น
เนื้อหาของพร็อกซี API |
ไม่มี | ไม่ |
Resources |
รายการทรัพยากร (JavaScript, Python, Java, XSLT) ในไดเรกทอรี /resources
ของพร็อกซี API นี้ โดยปกติแล้ว คุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อมีการสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge
เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อ
ให้มองเห็นเนื้อหาของพร็อกซี API |
ไม่มี | ไม่ |
Spec |
ระบุข้อกำหนด OpenAPI ที่เชื่อมโยงกับพร็อกซี API ค่า
จะตั้งเป็น URL หรือเส้นทางในร้านค้าที่ระบุ หมายเหตุ: ร้านค้าข้อมูลจำเพาะพร้อมให้บริการในประสบการณ์การใช้งาน Edge ใหม่ เท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับร้านค้าข้อกำหนดได้ที่การจัดการและการแชร์ ข้อกำหนด |
ไม่มี | ไม่ |
TargetServers |
รายการ TargetServer ที่อ้างอิงใน TargetEndpoint ของพร็อกซี API นี้ โดยปกติแล้ว คุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อให้มองเห็นเนื้อหาของ พร็อกซี API | ไม่มี | ไม่ |
TargetEndpoints |
รายการ TargetEndpoint ในไดเรกทอรี /targets ของพร็อกซี API นี้ คุณ
มักจะเห็นองค์ประกอบนี้เมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge
เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อให้มองเห็น
เนื้อหาของพร็อกซี API |
ไม่มี | ไม่ |
ProxyEndpoint
รูปภาพต่อไปนี้แสดงขั้นตอนการส่งคำขอ/การตอบกลับ

/apiproxy/proxies/default.xml
การกำหนดค่า ProxyEndpoint จะกำหนดอินเทอร์เฟซขาเข้า (ที่หันหน้าไปทางไคลเอ็นต์) สำหรับพร็อกซี API เมื่อกำหนดค่า ProxyEndpoint คุณกำลังตั้งค่าเครือข่ายที่ กำหนดวิธีที่แอปพลิเคชันไคลเอ็นต์ ("แอป") ควรเรียกใช้ API ที่พร็อกซี
ระบบจะจัดเก็บการกำหนดค่า ProxyEndpoint ตัวอย่างต่อไปนี้ไว้ใน
/apiproxy/proxies
<ProxyEndpoint name="default">
<PreFlow/>
<Flows/>
<PostFlow/>
<HTTPProxyConnection>
<BasePath>/weather</BasePath>
<VirtualHost>default</VirtualHost>
</HTTPProxyConnection>
<FaultRules/>
<DefaultFaultRule/>
<RouteRule name="default">
<TargetEndpoint>default</TargetEndpoint>
</RouteRule>
</ProxyEndpoint>องค์ประกอบการกำหนดค่าที่จำเป็นใน ProxyEndpoint พื้นฐานมีดังนี้
การกำหนดค่า ProxyEndpoint องค์ประกอบ
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
ProxyEndpoint |
|||
name |
ชื่อของ ProxyEndpoint ต้องไม่ซ้ำกันในการกำหนดค่าพร็อกซี API เมื่อมีการกำหนด ProxyEndpoint หลายรายการ (ในกรณีที่พบได้ยาก) อักขระที่คุณใช้ได้
ในชื่อจะจำกัดไว้เฉพาะอักขระต่อไปนี้ A-Za-z0-9._\-$ % |
ไม่มี | ใช่ |
PreFlow |
กำหนดนโยบายในโฟลว์ PreFlow ของคำขอหรือการตอบกลับ | ไม่มี | ใช่ |
Flows |
กำหนดนโยบายในโฟลว์แบบมีเงื่อนไขของคำขอหรือการตอบกลับ
|
ไม่มี | ใช่ |
PostFlow |
กำหนดนโยบายในโฟลว์ PostFlow ของคำขอหรือการตอบกลับ
|
ไม่มี | ใช่ |
HTTPProxyConnection |
กำหนดที่อยู่เครือข่ายและเส้นทาง URI ที่เชื่อมโยงกับพร็อกซี API | ||
BasePath |
สตริงที่จำเป็นซึ่งระบุเส้นทาง URI ที่ใช้โดย Apigee Edge เพื่อกำหนดเส้นทาง ข้อความขาเข้าไปยังพร็อกซี API ที่เหมาะสมโดยไม่ซ้ำกัน BasePath คือส่วนย่อย URI (เช่น การใช้ไวลด์การ์ดในเส้นทางฐาน คุณใช้ไวลด์การ์ด "*" อย่างน้อย 1 รายการในเส้นทางฐานของพร็อกซี API ได้ เช่น เส้นทางฐานของ สำคัญ: Apigee ไม่รองรับการใช้ไวลด์การ์ด "*" เป็นองค์ประกอบแรกของเส้นทางพื้นฐาน เช่น ระบบไม่รองรับ |
/ | ใช่ |
VirtualHost |
เชื่อมโยงพร็อกซี API กับ URL ฐานที่เฉพาะเจาะจงสำหรับสภาพแวดล้อม VirtualHost คือการกำหนดค่าที่มีชื่อซึ่งกำหนด URL อย่างน้อย 1 รายการสำหรับสภาพแวดล้อม VirtualHost ที่มีชื่อซึ่งกำหนดไว้สำหรับ ProxyEndpoint จะกำหนดโดเมนและพอร์ตที่เปิดเผยพร็อกซี API และ URL ที่แอปใช้เพื่อเรียกใช้พร็อกซี API โดยค่าเริ่มต้น ระบบจะกำหนด VirtualHost ที่มีชื่อ 2 รายการสำหรับสภาพแวดล้อม ดังนี้
|
ค่าเริ่มต้น | ไม่ |
Properties |
คุณกำหนดชุดการตั้งค่า HTTP ที่ไม่บังคับเป็นพร็อพเพอร์ตี้ของ
<ProxyEndpoint> ได้ |
ไม่มี | ไม่ |
FaultRules |
กำหนดวิธีที่ ProxyEndpoint ตอบสนองต่อข้อผิดพลาด กฎข้อผิดพลาดระบุรายการ 2 รายการต่อไปนี้
|
ไม่มี | ไม่ |
DefaultFaultRule |
จัดการข้อผิดพลาด (ระบบ การรับส่งข้อความ หรือนโยบาย) ที่ไม่ได้ จัดการอย่างชัดเจนโดยกฎข้อผิดพลาดอื่น |
ไม่มี | ไม่ |
RouteRule |
กำหนดปลายทางของข้อความคำขอขาเข้าหลังจากที่ไปป์ไลน์คำขอ ProxyEndpoint ประมวลผลแล้ว โดยปกติแล้ว RouteRule จะชี้ไปยังการกำหนดค่า TargetEndpoint ที่มีชื่อ แต่ก็สามารถชี้ไปยัง URL โดยตรงได้เช่นกัน | ||
Name |
แอตทริบิวต์ที่ต้องระบุซึ่งระบุชื่อสำหรับ RouteRule อักขระที่คุณ
ได้รับอนุญาตให้ใช้ในชื่อจะจำกัดไว้เฉพาะอักขระต่อไปนี้ A-Za-z0-9._\-$ % เช่น Cat2 %_ เป็นชื่อตามกฎหมาย |
ไม่มี | ใช่ |
Condition |
คำสั่งแบบมีเงื่อนไขที่ไม่บังคับซึ่งใช้สำหรับการกำหนดเส้นทางแบบไดนามิกระหว่างรันไทม์ Conditional RouteRules มีประโยชน์ เช่น ในการเปิดใช้การกำหนดเส้นทางตามเนื้อหาเพื่อรองรับการควบคุมเวอร์ชันของแบ็กเอนด์ | ไม่มี | ไม่ |
TargetEndpoint |
สตริงที่ไม่บังคับซึ่งระบุการกำหนดค่า TargetEndpoint ที่มีชื่อ TargetEndpoint ที่มีชื่อ
คือ TargetEndpoint ใดก็ตามที่กำหนดไว้ในพร็อกซี API เดียวกันภายใต้
ไดเรกทอรี การตั้งชื่อ TargetEndpoint จะเป็นการระบุตำแหน่งที่ควรส่งต่อข้อความคำขอ หลังจากที่ไปป์ไลน์คำขอ ProxyEndpoint ประมวลผลแล้ว โปรดทราบว่าการตั้งค่านี้เป็นแบบไม่บังคับ ProxyEndpoint อาจเรียกใช้ URL โดยตรง เช่น ทรัพยากร JavaScript หรือ Java ซึ่งทําหน้าที่เป็นไคลเอ็นต์ HTTP อาจทําหน้าที่พื้นฐานของ TargetEndpoint ซึ่งก็คือการส่งต่อคําขอไปยังบริการแบ็กเอนด์ |
ไม่มี | ไม่ |
| URL | สตริงที่ไม่บังคับซึ่งกำหนดที่อยู่เครือข่ายขาออกที่เรียกโดย
ProxyEndpoint โดยข้ามการกำหนดค่า TargetEndpoint ที่อาจจัดเก็บไว้ใน
/targets |
ไม่มี | ไม่ |
วิธีกำหนดค่า RouteRules
TargetEndpoint ที่มีชื่อหมายถึงไฟล์การกำหนดค่าใน /apiproxy/targets ซึ่ง RouteRule จะส่งต่อคำขอหลังจากที่ ProxyEndpoint ประมวลผลแล้ว
ตัวอย่างเช่น RouteRule ต่อไปนี้อ้างอิงถึงการกำหนดค่า
/apiproxy/targets/myTarget.xml
<RouteRule name="default"> <TargetEndpoint>myTarget</TargetEndpoint> </RouteRule>
การเรียกใช้ URL โดยตรง
นอกจากนี้ ProxyEndpoint ยังเรียกใช้บริการแบ็กเอนด์ได้โดยตรงด้วย การเรียกใช้ URL โดยตรงจะข้ามการกำหนดค่า TargetEndpoint ที่มีชื่อภายใต้ /apiproxy/targets) ด้วยเหตุนี้ TargetEndpoint จึงเป็นการกำหนดค่าพร็อกซี API ที่ไม่บังคับ แม้ว่าในทางปฏิบัติแล้ว เราไม่แนะนำให้เรียกใช้โดยตรงจาก ProxyEndpoint
ตัวอย่างเช่น RouteRule ต่อไปนี้จะเรียกใช้ HTTP ไปยัง
http://api.mycompany.com/v2
<RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
เส้นทางแบบมีเงื่อนไข
สามารถเชื่อมโยง RouteRules เพื่อรองรับการกำหนดเส้นทางแบบไดนามิกในขณะรันไทม์ คำขอขาเข้าสามารถ กำหนดเส้นทางไปยังการกำหนดค่า TargetEndpoint ที่มีชื่อ ไปยัง URL โดยตรง หรือไปยังการรวมกันของทั้ง 2 อย่าง โดยอิงตามส่วนหัว HTTP, เนื้อหาข้อความ, พารามิเตอร์การค้นหา หรือข้อมูลตามบริบท เช่น เวลาของ วัน, ภาษา ฯลฯ
Conditional RouteRules ทำงานเหมือนกับคำสั่งแบบมีเงื่อนไขอื่นๆ ใน Apigee Edge ดูข้อมูลอ้างอิงเกี่ยวกับเงื่อนไขและข้อมูลอ้างอิงเกี่ยวกับตัวแปร
ตัวอย่างเช่น การรวมกันของ RouteRule ต่อไปนี้จะประเมินคำขอขาเข้าก่อนเพื่อยืนยัน
ค่าของส่วนหัว HTTP หากส่วนหัว HTTP routeTo มีค่า
TargetEndpoint1 ระบบจะส่งต่อคำขอไปยัง TargetEndpoint ที่ชื่อ
TargetEndpoint1 หากไม่ได้ระบุ ระบบจะส่งต่อคำขอขาเข้าไปยัง
http://api.mycompany.com/v2
<RouteRule name="MyRoute"> <Condition>request.header.routeTo = "TargetEndpoint1"</Condition> <TargetEndpoint>TargetEndpoint1</TargetEndpoint> </RouteRule> <RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
เส้นทาง Null
คุณกำหนด RouteRule ที่เป็น Null เพื่อรองรับสถานการณ์ที่ข้อความคำขอไม่จำเป็นต้องส่งต่อ ไปยัง TargetEndpoint ได้ ซึ่งจะมีประโยชน์เมื่อ ProxyEndpoint ทำการประมวลผลที่จำเป็นทั้งหมด เช่น การใช้ JavaScript เพื่อเรียกใช้บริการภายนอก หรือการดึงข้อมูลจากการค้นหาไปยังที่เก็บคีย์/ค่าของบริการ API
เช่น การกำหนดเส้นทางที่ไม่มีค่ามีดังนี้
<RouteRule name="GoNowhere"/>
เส้นทางที่กำหนดค่าเป็น Null แบบมีเงื่อนไขอาจมีประโยชน์ ในตัวอย่างต่อไปนี้ มีการกำหนดค่าเส้นทาง Null ให้
ดำเนินการเมื่อส่วนหัว HTTP request.header.X-DoNothing มีค่าอื่นที่ไม่ใช่
null
<RouteRule name="DoNothingOnDemand"> <Condition>request.header.X-DoNothing != null</Condition> </RouteRule>
โปรดทราบว่า RouteRules สามารถเชื่อมโยงกันได้ ดังนั้น Route ที่เป็น Null แบบมีเงื่อนไขจึงมักเป็นคอมโพเนนต์หนึ่งของชุด RouteRules ที่ออกแบบมาเพื่อรองรับการกำหนดเส้นทางแบบมีเงื่อนไข
การใช้เส้นทาง Null แบบมีเงื่อนไขในทางปฏิบัติคือการรองรับการแคช การใช้ค่า ของตัวแปรที่ตั้งค่านโยบายแคช คุณสามารถกำหนดค่าพร็อกซี API ให้ดำเนินการ เส้นทาง Null เมื่อแสดงรายการจากแคช
<RouteRule name="DoNothingUnlessTheCacheIsStale"> <Condition>lookupcache.LookupCache-1.cachehit is true</Condition> </RouteRule>
TargetEndpoint

TargetEndpoint คือเทียบเท่าขาออกของ ProxyEndpoint TargetEndpoint ทำหน้าที่เป็นไคลเอ็นต์สำหรับบริการแบ็กเอนด์หรือ API โดยจะส่งคำขอและรับการตอบกลับ
พร็อกซี API ไม่จำเป็นต้องมี TargetEndpoint คุณกำหนดค่า ProxyEndpoints ให้เรียก URL ได้โดยตรง พร็อกซี API ที่ไม่มี TargetEndpoints มักจะมี ProxyEndpoint ที่ เรียกใช้บริการแบ็กเอนด์โดยตรง หรือได้รับการกำหนดค่าให้เรียกใช้บริการโดยใช้ Java หรือ JavaScript
การกำหนดค่า TargetEndpoint
/targets/default.xml
TargetEndpoint จะกำหนดการเชื่อมต่อขาออกจาก Apigee Edge ไปยังบริการหรือ ทรัพยากรอื่น
ตัวอย่างการกำหนดค่า TargetEndpoint มีดังนี้
<TargetEndpoint name="default">
<PreFlow/>
<Flows/>
<PostFlow/>
<HTTPTargetConnection>
<URL>http://mocktarget.apigee.net</URL>
<SSLInfo/>
</HTTPTargetConnection>
<FaultRules/>
<DefaultFaultRule/>
<ScriptTarget/>
<LocalTargetConnection/>
</TargetEndpoint>การกำหนดค่า TargetEndpoint องค์ประกอบ
TargetEndpoint สามารถเรียกเป้าหมายได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
- HTTPTargetConnection สำหรับการเรียก HTTP(S)
- LocalTargetConnection สำหรับการเชื่อมโยงพร็อกซีกับพร็อกซีในเครื่อง
- ScriptTarget สำหรับการเรียกใช้สคริปต์ Node.js ที่โฮสต์ที่ Edge
กำหนดค่าเพียง 1 รายการใน TargetEndpoint
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
TargetEndpoint |
|||
name |
ชื่อของ TargetEndpoint ซึ่งต้องไม่ซ้ำกันภายในพร็อกซี API
การกำหนดค่า ชื่อของ TargetEndpoint จะใช้ใน RouteRule ของ ProxyEndpoint เพื่อ
นำคำขอสำหรับการประมวลผลขาออก อักขระที่คุณได้รับอนุญาตให้ใช้ในชื่อ
จำกัดไว้เฉพาะอักขระต่อไปนี้ A-Za-z0-9._\-$ % |
ไม่มี | ใช่ |
PreFlow |
กำหนดนโยบายในโฟลว์ PreFlow ของคำขอหรือการตอบกลับ | ไม่มี | ใช่ |
Flows |
กำหนดนโยบายในโฟลว์แบบมีเงื่อนไขของคำขอหรือการตอบกลับ
|
ไม่มี | ใช่ |
PostFlow |
กำหนดนโยบายในโฟลว์ PostFlow ของคำขอหรือการตอบกลับ
|
ไม่มี | ใช่ |
HTTPTargetConnection |
ระบุการเข้าถึงทรัพยากรแบ็กเอนด์ผ่าน HTTP ด้วยองค์ประกอบย่อย หากใช้ HTTPTargetConnection อย่ากำหนดค่าการเชื่อมต่อเป้าหมายประเภทอื่นๆ (ScriptTarget หรือ LocalTargetConnection) |
||
URL |
กำหนดที่อยู่เครือข่ายของบริการแบ็กเอนด์ที่ TargetEndpoint จะส่งต่อข้อความคำขอ ไปยัง | ไม่มี | ไม่ |
LoadBalancer |
กำหนดการกำหนดค่า TargetServer ที่มีชื่ออย่างน้อย 1 รายการ การกำหนดค่า TargetServer ที่มีชื่อ สามารถใช้เพื่อกำหนดการเชื่อมต่อการกำหนดค่าปลายทาง 2 รายการขึ้นไป สำหรับการปรับสมดุลโหลด นอกจากนี้ คุณยังใช้ TargetServers เพื่อแยกการกำหนดค่าพร็อกซี API ออกจาก URL ปลายทางของบริการแบ็กเอนด์ที่เฉพาะเจาะจงได้ด้วย |
ไม่มี | ไม่ |
Properties |
คุณกำหนดชุดการตั้งค่า HTTP ที่ไม่บังคับเป็นพร็อพเพอร์ตี้ของ
<TargetEndpoint> ได้ |
ไม่มี | ไม่ |
SSLInfo |
คุณเลือกกำหนดการตั้งค่า TLS/SSL ใน TargetEndpoint เพื่อควบคุมการเชื่อมต่อ TLS/SSL ระหว่างพร็อกซี API กับบริการเป้าหมายได้ ดูการกำหนดค่า TargetEndpoint ของ TLS/SSL | ไม่มี | ไม่ |
LocalTargetConnection |
ระบุทรัพยากรที่จะเข้าถึงในเครื่องโดยข้ามลักษณะเครือข่าย เช่น การปรับสมดุลโหลดและตัวประมวลผลข้อความ
หากต้องการระบุทรัพยากรเป้าหมาย ให้ใส่องค์ประกอบย่อย APIProxy (ที่มีองค์ประกอบ ProxyEndpoint) หรือองค์ประกอบย่อย Path ดูข้อมูลเพิ่มเติมได้ที่การเชื่อมต่อพร็อกซี API เข้าด้วยกัน หากใช้ LocalTargetConnection อย่ากำหนดค่าการเชื่อมต่อเป้าหมายประเภทอื่นๆ (HTTPTargetConnection หรือ ScriptTarget) |
||
APIProxy |
ระบุชื่อของพร็อกซี API ที่จะใช้เป็นเป้าหมายสำหรับคำขอ พร็อกซีเป้าหมาย ต้องอยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับพร็อกซีที่ส่งคำขอ ซึ่งเป็น ทางเลือกแทนการใช้องค์ประกอบเส้นทาง | ไม่มี | ไม่ |
ProxyEndpoint |
ใช้กับ APIProxy เพื่อระบุชื่อของ ProxyEndpoint ของพร็อกซีเป้าหมาย | ไม่มี | ไม่ |
Path |
ระบุเส้นทางปลายทางของพร็อกซี API ที่จะใช้เป็นเป้าหมายสำหรับคำขอ พร็อกซีเป้าหมาย ต้องอยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับพร็อกซีที่ส่งคำขอ ซึ่งเป็นทางเลือกแทนการใช้ APIProxy | ไม่มี | ไม่ |
FaultRules |
กำหนดวิธีที่ TargetEndpoint ตอบสนองต่อข้อผิดพลาด กฎข้อผิดพลาดระบุรายการ 2 รายการต่อไปนี้
|
ไม่มี | ไม่ |
DefaultFaultRule |
จัดการข้อผิดพลาด (ระบบ การรับส่งข้อความ การรับส่ง หรือนโยบาย) ที่ไม่ได้ จัดการอย่างชัดเจนโดย FaultRule อื่น |
ไม่มี | ไม่ |
ScriptTarget |
|||
ResourceURL |
กำหนดประเภททรัพยากร (โหนด) และชื่อของสคริปต์ Node.js หลักที่ ใช้ฟังก์ชันการทำงานของ TargetEndpoint
คุณต้องรวมสคริปต์ไว้กับไฟล์ทรัพยากรของพร็อกซี API ดูการเพิ่ม Node.js ลงในพร็อกซี API ที่มีอยู่ หากใช้ ScriptTarget อย่ากำหนดค่าการเชื่อมต่อเป้าหมายประเภทอื่นๆ (HTTPTargetConnection หรือ LocalTargetConnection) |
ไม่มี | ใช่ |
EnvironmentVariable |
ส่งตัวแปรสภาพแวดล้อมไปยังสคริปต์ Node.js หลัก (ไม่บังคับ) |
ไม่มี | ไม่ |
Arguments |
ส่งอาร์กิวเมนต์ไปยังสคริปต์ Node.js หลัก (ไม่บังคับ) |
ไม่มี | ไม่ |
การกำหนดค่า TargetEndpoint ของ TLS/SSL
โดยทั่วไปแล้ว TargetEndpoint จะต้องจัดการการเชื่อมต่อ HTTPS กับโครงสร้างพื้นฐานของแบ็กเอนด์ที่แตกต่างกัน ด้วยเหตุนี้ เราจึงรองรับการตั้งค่าการกำหนดค่า TLS/SSL หลายรายการ
TLS/SSL องค์ประกอบการกำหนดค่า TargetEndpoint
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
SSLInfo |
|||
Enabled |
ระบุว่าเปิดใช้ TLS/SSL สำหรับปลายทางหรือไม่
ค่าเริ่มต้นคือ true หาก <URL> ระบุโปรโตคอล HTTPS
และ false หาก <URL> ระบุ HTTP |
จริง หาก <URL> ระบุ HTTPS |
ไม่ |
TrustStore |
ที่เก็บคีย์ที่มีใบรับรองเซิร์ฟเวอร์ที่เชื่อถือได้ | ไม่มี | ไม่ |
ClientAuthEnabled |
การตั้งค่าที่เปิดการตรวจสอบสิทธิ์ไคลเอ็นต์ขาออก (TLS/SSL แบบ 2 ทาง) | เท็จ | ไม่ |
KeyStore |
ที่เก็บคีย์ที่มีคีย์ส่วนตัวที่ใช้สำหรับการตรวจสอบสิทธิ์ไคลเอ็นต์ขาออก | ไม่มี | มี (หาก ClientAuthEnabled เป็นจริง) |
KeyAlias |
ชื่อแทนคีย์ของคีย์ส่วนตัวที่ใช้สำหรับการตรวจสอบสิทธิ์ไคลเอ็นต์ขาออก | ไม่มี | มี (หาก ClientAuthEnabled เป็นจริง) |
Ciphers |
การเข้ารหัสที่รองรับสำหรับ TLS/SSL ขาออก หากไม่ได้ระบุการเข้ารหัส ระบบจะอนุญาตการเข้ารหัสทั้งหมด ที่ใช้ได้กับ JVM หากต้องการจํากัดการใช้ Cipher ให้เพิ่มองค์ประกอบต่อไปนี้ซึ่งแสดงรายการ Cipher ที่รองรับ <Ciphers> <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher> <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher> </Ciphers> |
ไม่มี | ไม่ |
Protocols |
โปรโตคอลที่รองรับสำหรับ TLS/SSL ขาออก หากไม่ได้ระบุโปรโตคอล ระบบจะอนุญาตโปรโตคอลทั้งหมดที่ใช้ได้กับ JVM หากต้องการจำกัดโปรโตคอล ให้เพิ่มองค์ประกอบต่อไปนี้ซึ่งแสดงรายการโปรโตคอลที่รองรับ <Protocols> <Protocol>TLSv1.1</Protocol> <Protocol>TLSv1.2</Protocol> </Protocols> |
ไม่มี | ไม่ |
CommonName |
หากระบุไว้ ค่าที่จะใช้ตรวจสอบชื่อทั่วไปของใบรับรองเป้าหมาย ค่านี้ใช้ได้กับการกำหนดค่า TargetEndpoint และ TargetServer เท่านั้น แต่ใช้ไม่ได้กับการกำหนดค่า VirtualHost โดยค่าเริ่มต้น ค่าที่ระบุจะตรงกับชื่อจริงของใบรับรองเป้าหมายทุกประการ
ตัวอย่างเช่น การใช้ Apigee สามารถจับคู่กับไวลด์การ์ดได้โดยใช้แอตทริบิวต์ เช่น ชื่อทั่วไปที่ระบุเป็น <CommonName wildcardMatch="true">*.myhost.com</CommonName> |
ไม่มี | ไม่ |
ตัวอย่าง TargetEndpoint ที่เปิดใช้การตรวจสอบสิทธิ์ไคลเอ็นต์ขาออก
<TargetEndpoint name="default">
<HttpTargetConnection>
<URL>https://myservice.com</URL>
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>true</ClientAuthEnabled>
<KeyStore>myKeystore</KeyStore>
<KeyAlias>myKey</KeyAlias>
<TrustStore>myTruststore</TrustStore>
</SSLInfo>
</HttpTargetConnection>
</TargetEndpoint>ดูวิธีการโดยละเอียดได้ที่การกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์ (Cloud และ Private Cloud)
การใช้ตัวแปรโฟลว์เพื่อตั้งค่า TLS/SSL แบบไดนามิก
นอกจากนี้ คุณยังตั้งค่ารายละเอียด TLS/SSL แบบไดนามิกเพื่อรองรับข้อกำหนดรันไทม์ที่ยืดหยุ่นได้ด้วย ตัวอย่างเช่น หากพร็อกซีเชื่อมต่อกับเป้าหมาย 2 รายการที่อาจแตกต่างกัน (เป้าหมายทดสอบและเป้าหมายการใช้งานจริง) คุณสามารถตั้งค่าพร็อกซี API โดยทางโปรแกรมให้ตรวจหาสภาพแวดล้อมที่เรียกใช้ และตั้งค่าการอ้างอิงไปยังที่เก็บคีย์และที่เก็บที่เชื่อถือที่เหมาะสมแบบไดนามิก บทความในชุมชน Apigee ต่อไปนี้อธิบายสถานการณ์นี้โดยละเอียดและมีตัวอย่างพร็อกซี API ที่สามารถนำไปใช้ได้: Dynamic SSLInfo for TargetEndpoint using variable reference
ในตัวอย่างต่อไปนี้เกี่ยวกับวิธีตั้งค่าแท็ก <SSLInfo> ในการกำหนดค่า TargetEndpoint คุณระบุค่าได้ในขณะรันไทม์ เช่น โดย Java
Callout, นโยบาย JavaScript หรือนโยบาย Assign Message ใช้ตัวแปรข้อความที่มีค่าที่คุณต้องการตั้งค่า
อนุญาตให้ใช้ตัวแปรในองค์ประกอบต่อไปนี้เท่านั้น
<SSLInfo> <Enabled>{myvars.ssl.enabled}</Enabled> <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled> <KeyStore>{myvars.ssl.keystore}</KeyStore> <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias> <TrustStore>{myvars.ssl.trustStore}</TrustStore> </SSLInfo>
การใช้ การอ้างอิงเพื่อตั้งค่า TLS/SSL แบบไดนามิก
เมื่อกำหนดค่า TargetEndpoint ที่ใช้ HTTPS คุณต้องพิจารณากรณีที่ใบรับรอง TLS/SSL หมดอายุ หรือการเปลี่ยนแปลงการกำหนดค่าระบบกำหนดให้คุณต้องอัปเดตใบรับรอง ในการติดตั้ง Edge สำหรับ Private Cloud เมื่อกำหนดค่า TLS/SSL โดยใช้ค่าแบบคงที่หรือโดย ใช้ตัวแปรโฟลว์ คุณอาจต้องรีสตาร์ทตัวประมวลผลข้อความ
ดูข้อมูลเพิ่มเติมได้ที่อัปเดตใบรับรอง TLS
อย่างไรก็ตาม คุณสามารถกำหนดค่า TargetEndpoint ให้ใช้การอ้างอิงไปยัง ที่เก็บคีย์หรือที่เก็บที่เชื่อถือแทนได้ ข้อดีของการใช้การอ้างอิงคือคุณสามารถอัปเดตการอ้างอิงให้ชี้ไปยังที่เก็บคีย์หรือที่เก็บที่เชื่อถืออื่นเพื่ออัปเดตใบรับรอง TLS/SSL ได้โดยไม่ต้องรีสตาร์ทตัวประมวลผลข้อความ
ตัวอย่างเช่น ด้านล่างนี้คือ TargetEndpoint ที่ใช้การอ้างอิงไปยังที่เก็บคีย์
<SSLInfo>
<Enabled>true</Enabled>
<ClientAuthEnabled>false</ClientAuthEnabled>
<KeyStore>ref://keystoreref</KeyStore>
<KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>ใช้การเรียก API แบบ POST ต่อไปนี้เพื่อสร้างการอ้างอิงชื่อ keystoreref
curl -X POST -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
<Refers>myTestKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:passwordการอ้างอิงจะระบุชื่อของที่เก็บคีย์และประเภทของที่เก็บคีย์
ใช้การเรียก API แบบ GET ต่อไปนี้เพื่อดูข้อมูลอ้างอิง
curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:passwordหากต้องการเปลี่ยนการอ้างอิงในภายหลังให้ชี้ไปยังที่เก็บคีย์อื่น โดยตรวจสอบว่าชื่อแทนมีชื่อเดียวกัน ให้ใช้การเรียก PUT ต่อไปนี้
curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
<Refers>myNewKeystore</Refers>
<ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:passwordTargetEndpoint ที่มีการจัดสรรภาระงานเป้าหมาย
TargetEndpoints รองรับการจัดสรรภาระงานใน TargetServer ที่มีชื่อหลายรายการโดยใช้อัลกอริทึมการจัดสรรภาระงาน 3 รายการ
ดูวิธีการโดยละเอียดได้ที่การปรับสมดุลโหลดในเซิร์ฟเวอร์แบ็กเอนด์
นโยบาย
ไดเรกทอรี /policies ในพร็อกซี API มีนโยบายทั้งหมดที่พร้อม
แนบกับโฟลว์ในพร็อกซี API
องค์ประกอบการกำหนดค่านโยบาย
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
Policy |
|||
name |
ชื่อภายในของนโยบาย อักขระที่คุณใช้ในชื่อได้จะจำกัดไว้
เฉพาะ ไม่บังคับ: ใช้องค์ประกอบ |
ไม่มี | ใช่ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่ |
async |
หมายเหตุ: แอตทริบิวต์นี้ไม่ได้ทําให้นโยบายทํางานแบบไม่พร้อมกัน
ในกรณีส่วนใหญ่ ให้เว้นค่าเริ่มต้นไว้ที่ เมื่อตั้งค่าเป็น หากต้องการใช้ลักษณะการทำงานแบบอะซิงโครนัสในพร็อกซี API โปรดดูรูปแบบออบเจ็กต์ JavaScript |
เท็จ | ไม่ |
เอกสารแนบนโยบาย
รูปภาพต่อไปนี้แสดงลำดับการดำเนินการของโฟลว์พร็อกซี API

ดังที่แสดงด้านบน
นโยบายจะแนบเป็นขั้นตอนการประมวลผลกับโฟลว์ ชื่อของนโยบายใช้เพื่อ อ้างอิงนโยบายที่จะบังคับใช้เป็นขั้นตอนการประมวลผล รูปแบบของไฟล์แนบนโยบายมีดังนี้
<Step><Name>MyPolicy</Name></Step>
ระบบจะบังคับใช้นโยบายตามลำดับที่แนบกับโฟลว์ เช่น
<Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step>
การกำหนดค่าการแนบนโยบาย องค์ประกอบ
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
Step |
|||
Name |
ชื่อของนโยบายที่จะดำเนินการตามคำจำกัดความของขั้นตอนนี้ | ไม่มี | ใช่ |
Condition |
คำสั่งแบบมีเงื่อนไขที่กำหนดว่าควรบังคับใช้นโยบายหรือไม่ หากนโยบายมีเงื่อนไขที่เชื่อมโยงอยู่ นโยบายจะทำงานก็ต่อเมื่อคำสั่งแบบมีเงื่อนไขประเมินเป็นจริงเท่านั้น | ไม่มี | ไม่ |
โฟลว์
ProxyEndpoint และ TargetEndpoint จะกำหนดไปป์ไลน์สำหรับการประมวลผลข้อความคำขอและการตอบกลับ ไปป์ไลน์การประมวลผลประกอบด้วยโฟลว์คำขอและโฟลว์การตอบกลับ แต่ละคำขอ โฟลว์และโฟลว์การตอบกลับจะแบ่งย่อยออกเป็น PreFlow, โฟลว์ "แบบมีเงื่อนไข" หรือ "แบบมีชื่อ" ที่ไม่บังคับอย่างน้อย 1 รายการ และ PostFlow
- PreFlow: ทำงานเสมอ ดำเนินการก่อนโฟลว์แบบมีเงื่อนไข
- PostFlow: ทำงานเสมอ ดำเนินการหลังจากโฟลว์แบบมีเงื่อนไข
นอกจากนี้ คุณยังเพิ่ม PostClientFlow ไปยัง ProxyEndpoint ได้ ซึ่งจะทำงานหลังจากที่ระบบส่งการตอบกลับไปยังแอปไคลเอ็นต์ที่ขอมา เฉพาะนโยบายการบันทึกข้อความและส่วนขยายการบันทึกของ Google Stackdriver เท่านั้นที่แนบไปกับโฟลว์นี้ได้ PostClientFlow ช่วยลดเวลาในการตอบสนองของพร็อกซี API และทำให้ข้อมูลพร้อมใช้งานสำหรับการ
บันทึกที่ไม่ได้คำนวณจนกว่าจะมีการส่งคืนการตอบกลับไปยังไคลเอ็นต์ เช่น client.sent.start.timestamp และ client.sent.end.timestamp โดยโฟลว์นี้ใช้
เพื่อวัดช่วงเวลาระหว่างการประทับเวลาเริ่มต้นและสิ้นสุดสำหรับข้อความตอบกลับเป็นหลัก
ดูวิดีโอวิธีการสั้นๆ
วิดีโอ: ดูวิดีโอสั้นๆ นี้เกี่ยวกับการใช้การบันทึกข้อความใน PostClientFlow
ต่อไปนี้คือตัวอย่าง PostClientFlow ที่มีนโยบายการบันทึกข้อความแนบอยู่
...
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<PostClientFlow>
<Request/>
<Response>
<Step>
<Name>Message-Logging-1</Name>
</Step>
</Response>
</PostClientFlow>
...ไปป์ไลน์การประมวลผลพร็อกซี API จะเรียกใช้โฟลว์ตามลำดับต่อไปนี้
ไปป์ไลน์คำขอ
- PreFlow ของคำขอพร็อกซี
- โฟลว์แบบมีเงื่อนไขของคำขอพร็อกซี (ไม่บังคับ)
- Proxy Request PostFlow
- Target Request PreFlow
- โฟลว์แบบมีเงื่อนไขของคำขอเป้าหมาย (ไม่บังคับ)
- Target Request PostFlow
ไปป์ไลน์การตอบกลับ:
- Target Response PreFlow
- โฟลว์แบบมีเงื่อนไขของการตอบกลับเป้าหมาย (ไม่บังคับ)
- Target Response PostFlow
- PreFlow ของการตอบกลับพร็อกซี
- โฟลว์แบบมีเงื่อนไขของการตอบกลับพร็อกซี (ไม่บังคับ)
- Proxy Response PostFlow
- การตอบกลับ PostClientFlow (ไม่บังคับ)
เฉพาะโฟลว์ที่มีไฟล์แนบนโยบายเท่านั้นที่ต้องกำหนดค่าในการกำหนดค่า ProxyEndpoint หรือ TargetEndpoint คุณต้องระบุ PreFlow และ PostFlow ในการกำหนดค่า ProxyEndpoint หรือ TargetEndpoint เท่านั้นเมื่อต้องบังคับใช้นโยบายระหว่างการประมวลผล PreFlow หรือ PostFlow
การจัดลำดับองค์ประกอบ PreFlow และ PostFlow ไม่สำคัญ ซึ่งต่างจากโฟลว์แบบมีเงื่อนไข เนื่องจากพร็อกซี API จะเรียกใช้แต่ละองค์ประกอบในจุดที่เหมาะสมในไปป์ไลน์เสมอ ไม่ว่าองค์ประกอบเหล่านั้นจะปรากฏที่ใดในการกำหนดค่าปลายทาง
โฟลว์แบบมีเงื่อนไข
ProxyEndpoint และ TargetEndpoint รองรับโฟลว์แบบมีเงื่อนไขได้ไม่จำกัดจำนวน (หรือที่เรียกว่า "โฟลว์ที่มีชื่อ")
พร็อกซี API จะทดสอบเงื่อนไขที่ระบุในการไหลแบบมีเงื่อนไข และหากตรงตามเงื่อนไข พร็อกซี API จะดำเนินการตามขั้นตอนการประมวลผลในการไหลแบบมีเงื่อนไข หากไม่เป็นไปตามเงื่อนไข ระบบจะข้ามขั้นตอนการประมวลผลในโฟลว์แบบมีเงื่อนไข ระบบจะประเมินโฟลว์แบบมีเงื่อนไขตามลำดับที่กำหนดไว้ในพร็อกซี API และจะเรียกใช้โฟลว์แรกที่มีเงื่อนไขตรงตามที่กำหนด
การกำหนดโฟลว์แบบมีเงื่อนไขจะช่วยให้คุณใช้ขั้นตอนการประมวลผลในพร็อกซี API โดยอิงตามสิ่งต่อไปนี้ได้
- URI คำขอ
- คำกริยา HTTP (GET/PUT/POST/DELETE)
- ค่าของพารามิเตอร์การค้นหา ส่วนหัว และพารามิเตอร์แบบฟอร์ม
- โรคอื่นๆ อีกหลายประเภท
ตัวอย่างเช่น โฟลว์แบบมีเงื่อนไขต่อไปนี้จะระบุว่าโฟลว์จะทำงานเมื่อเส้นทางทรัพยากรของคำขอเป็น /accesstoken เท่านั้น คำขอขาเข้าที่มีเส้นทาง
/accesstoken จะทำให้ระบบเรียกใช้โฟลว์นี้พร้อมกับนโยบาย
ที่แนบมากับโฟลว์ หากเส้นทางการขอไม่มีคำต่อท้าย
/accesstoken ระบบจะไม่ดำเนินการโฟลว์ (แม้ว่าโฟลว์แบบมีเงื่อนไขอื่น
อาจดำเนินการก็ตาม)
<Flows>
<Flow name="TokenEndpoint">
<Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
<Request>
<Step>
<Name>GenerateAccessToken</Name>
</Step>
</Request>
</Flow>
</Flows>องค์ประกอบการกำหนดค่าโฟลว์
| ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
|---|---|---|---|
Flow |
ไปป์ไลน์การประมวลผลคำขอหรือการตอบกลับที่กำหนดโดย ProxyEndpoint หรือ TargetEndpoint | ||
Name |
ชื่อที่ไม่ซ้ำกันของโฟลว์ | ไม่มี | ใช่ |
Condition |
คำสั่งแบบมีเงื่อนไขที่ประเมินตัวแปรอย่างน้อย 1 รายการเพื่อให้ประเมินค่าเป็นจริงหรือ เท็จ โฟลว์ทั้งหมดนอกเหนือจากประเภท PreFlow และ PostFlow ที่กำหนดไว้ล่วงหน้าต้องกำหนด เงื่อนไขสำหรับการดำเนินการ | ไม่มี | ใช่ |
Request |
ไปป์ไลน์ที่เชื่อมโยงกับการประมวลผลข้อความคำขอ | ไม่มี | ไม่ |
Response |
ไปป์ไลน์ที่เชื่อมโยงกับการประมวลผลข้อความตอบกลับ | ไม่มี | ไม่ |
การประมวลผลขั้นตอน
Apigee Edge จะบังคับใช้การจัดลำดับตามลำดับของโฟลว์แบบมีเงื่อนไข โฟลว์แบบมีเงื่อนไข
จะทำงานจากบนลงล่าง ระบบจะเรียกใช้โฟลว์แบบมีเงื่อนไขแรกที่มีเงื่อนไขซึ่งประเมินเป็น
true และจะเรียกใช้โฟลว์แบบมีเงื่อนไขเพียงโฟลว์เดียวเท่านั้น
ตัวอย่างเช่น ในการกำหนดค่าโฟลว์ต่อไปนี้ คำขอขาเข้าใดๆ ที่ไม่มี
คำต่อท้ายเส้นทาง /first หรือ /second จะทำให้ ThirdFlow
ทำงาน ซึ่งบังคับใช้นโยบายที่ชื่อ Return404
<Flows>
<Flow name="FirstFlow">
<Condition>proxy.pathsuffix MatchesPath "/first"</Condition>
<Request>
<Step><Name>FirstPolicy</Name></Step>
</Request>
</Flow>
<Flow name="SecondFlow">
<Condition>proxy.pathsuffix MatchesPath "/second"</Condition>
<Request>
<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>
</Request>
</Flow>
<Flow name="ThirdFlow">
<Request>
<Step><Name>Return404</Name></Step>
</Request>
</Flow>
</Flows>แหล่งข้อมูล
"ทรัพยากร" (ไฟล์ทรัพยากรสำหรับใช้ในพร็อกซี API) คือสคริปต์ โค้ด และการแปลง XSL ที่แนบไปกับโฟลว์ได้โดยใช้นโยบาย โดยจะปรากฏในส่วน "สคริปต์" ของเครื่องมือแก้ไขพร็อกซี API ใน UI การจัดการ
ดูไฟล์ทรัพยากรสำหรับประเภททรัพยากรที่รองรับ
คุณจัดเก็บทรัพยากรได้ในพร็อกซี API, สภาพแวดล้อม หรือองค์กร ในแต่ละกรณี ระบบจะอ้างอิงทรัพยากรตามชื่อในนโยบาย บริการ API จะแก้ไขชื่อโดยย้ายจากพร็อกซี API ไปยังสภาพแวดล้อม แล้วไปยังระดับองค์กร
นโยบายในสภาพแวดล้อมใดก็ได้สามารถอ้างอิงทรัพยากรที่จัดเก็บไว้ที่ระดับองค์กรได้ นโยบายในสภาพแวดล้อมนั้นสามารถอ้างอิงทรัพยากรที่จัดเก็บไว้ที่ระดับสภาพแวดล้อมได้ ทรัพยากรที่จัดเก็บไว้ที่ระดับพร็อกซี API จะอ้างอิงได้เฉพาะนโยบายในพร็อกซี API นั้น