คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
ในฐานะนักพัฒนาซอฟต์แวร์ที่ทำงานร่วมกับ Apigee Edge กิจกรรมการพัฒนาหลักของคุณจะเกี่ยวข้องกับ การกำหนดค่าพร็อกซี API ที่ทำหน้าที่เป็นพร็อกซีสำหรับ API หรือบริการแบ็กเอนด์ เอกสารนี้เป็น การอ้างอิงองค์ประกอบการกำหนดค่าทั้งหมดที่คุณใช้ได้เมื่อสร้างพร็อกซี API
หากคุณกำลังเรียนรู้วิธีสร้างพร็อกซี API ขอแนะนำให้เริ่มต้นจากหัวข้อ สร้าง API แบบง่าย พร็อกซี
วิธีที่นิยมใช้กันมากที่สุดในการแก้ไขการกำหนดค่าพร็อกซี ได้แก่
- การใช้ ตัวแก้ไข XML ภายใน Edge UI
- ดาวน์โหลดการกำหนดค่าและแก้ไขในเครื่อง ตามที่อธิบายไว้ใน Local การพัฒนาการกำหนดค่าพร็อกซี
การพัฒนาการกำหนดค่าพร็อกซีในเครื่อง
คุณดาวน์โหลดการกำหนดค่าพร็อกซีเพื่อแก้ไขในเครื่องได้ วันและเวลา ให้คุณอัปโหลดผลลัพธ์ไปยัง Edge วิธีนี้จะช่วยให้คุณผสานรวมพร็อกซี ลงในการควบคุมต้นทาง การกำหนดเวอร์ชัน และเวิร์กโฟลว์อื่นๆ ที่แชร์ นอกจากนี้ กำหนดค่าพร็อกซีภายในเครื่อง คุณสามารถใช้ตัวแก้ไขและการตรวจสอบ XML ของคุณเอง และเครื่องมือการประมาณที่กำหนดได้เอง
ส่วนนี้จะอธิบายวิธีใช้ UI เพื่อดาวน์โหลดการกำหนดค่าพร็อกซีที่มีอยู่ รวมทั้งวิธีแก้ไข
จากนั้นจึงอัปโหลดกลับไปยัง Edge เพื่อทำให้ใช้งานได้ คุณยังสามารถใช้
Apigeetool
เพื่อดาวน์โหลดการกำหนดค่าพร็อกซีใหม่และทำให้การกำหนดค่าใช้งานได้ (โดยใช้ fetchproxy
และ
deployproxy
คำสั่ง ตามลำดับ)
วิธีแก้ไขการกำหนดค่าพร็อกซีในเครื่องโดยใช้ UI
- ดาวน์โหลดการกำหนดค่าพร็อกซีปัจจุบันใน Edge UI (ในพร็อกซี API ดู เลือกโปรเจ็กต์ > ดาวน์โหลดการแก้ไข)
- สร้างไดเรกทอรีใหม่และขยายไฟล์ ZIP ที่ดาวน์โหลดไว้ในเครื่องของคุณ
ได้
หากต้องการขยายไฟล์ ZIP คุณสามารถใช้ยูทิลิตี เช่น
unzip
ดังต่อไปนี้ ตัวอย่างได้แก่mkdir myappdir
unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir
เนื้อหาแบบขยายในไฟล์ ZIP ควรคล้ายกับโครงสร้างที่อธิบายไว้ใน โครงสร้างพร็อกซี API
- แก้ไขไฟล์ต้นฉบับตามความจำเป็น สำหรับคำอธิบายของไฟล์ต้นฉบับในพร็อกซี
การกำหนดค่า โปรดดู
ไฟล์การกำหนดค่าและ
โครงสร้างไดเรกทอรีของพร็อกซี API
เช่น หากต้องการเปิดใช้ การเฝ้าติดตามด้านสุขภาพใน พร็อกซี 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 จะเพิ่มหมายเลขการแก้ไขของการกำหนดค่าพร็อกซีใหม่ให้คุณเมื่ออัปโหลด ได้
- อัปโหลดการกำหนดค่าพร็อกซีใหม่โดยใช้ Edge UI (ในพร็อกซี API
ดู เลือกโปรเจ็กต์ > อัปโหลดการแก้ไขใหม่)
หากคุณได้รับข้อผิดพลาด เช่น Bundle is invalid. Empty bundle. ให้ตรวจสอบว่า ไดเรกทอรีระดับบนสุดของไฟล์ ZIP ของคุณคือ
/apiproxy
หากไม่ใช่ ให้เก็บถาวร ไฟล์การกำหนดค่าพร็อกซีจากรากของไดเรกทอรีที่ขยายหลังจากอัปโหลดการกำหนดค่าพร็อกซีใหม่ Edge จะเพิ่มหมายเลขการแก้ไขและ จะแสดงในมุมมองสรุปการแก้ไข
Edge จะไม่ทำให้การแก้ไขใหม่ใช้งานได้หลังจากที่คุณอัปโหลดเวอร์ชันดังกล่าวด้วย UI
- ทำให้การแก้ไขใหม่ใช้งานได้
สำหรับข้อมูลเพิ่มเติม โปรดดู บทแนะนำ: วิธีดาวน์โหลดพร็อกซีโดยใช้ UI และ 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 และ secondVersion 0 การตั้งค่านี้อาจ ที่จะใช้ในอนาคตเพื่อให้เกิดการพัฒนารูปแบบพร็อกซี API | 4.0 | ไม่ได้ |
Description |
คำอธิบายข้อความของพร็อกซี API หากระบุไว้ คำอธิบายจะแสดงใน Edge Management UI | ไม่มี | ไม่ได้ |
DisplayName |
ชื่อที่ใช้ง่ายซึ่งอาจแตกต่างจากแอตทริบิวต์ name ของ
การกำหนดค่าพร็อกซี API |
ไม่มี | ไม่ได้ |
Policies |
รายการนโยบายในไดเรกทอรี /policies ของพร็อกซี API นี้ คุณจะ
โดยปกติแล้วจะเห็นองค์ประกอบนี้เมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น
นี่เป็นแค่ 'ไฟล์ Manifest' ที่ออกแบบมาเพื่อช่วยให้มองเห็นเนื้อหาของ
พร็อกซี API |
ไม่มี | ไม่ได้ |
ProxyEndpoints |
รายการ ProxyEndpoints ในไดเรกทอรี /proxies ของพร็อกซี API นี้ คุณ
โดยปกติจะเห็นองค์ประกอบนี้เมื่อสร้างพร็อกซี API โดยใช้ Edge เท่านั้น
UI ของการจัดการ นี่เป็นแค่ 'ไฟล์ Manifest' ที่ออกแบบมาเพื่อแสดงการเข้าชม
เนื้อหาของพร็อกซี API |
ไม่มี | ไม่ได้ |
Resources |
รายการทรัพยากร (JavaScript, Python, Java, ePub) ใน /resources
ของพร็อกซี API นี้ โดยปกติคุณจะเห็นองค์ประกอบนี้เมื่อพร็อกซี API ถูก
ที่สร้างขึ้นโดยใช้ UI การจัดการ Edge นี่เป็นแค่ 'ไฟล์ Manifest' ที่ออกแบบมาเพื่อ
ให้ระดับการเข้าถึงเนื้อหาของพร็อกซี API |
ไม่มี | ไม่ได้ |
Spec |
ระบุข้อกำหนดของ OpenAPI ที่เชื่อมโยงกับพร็อกซี API ค่า
ได้รับการตั้งค่าเป็น URL หรือเส้นทางในที่เก็บข้อกำหนด หมายเหตุ: ที่เก็บข้อกำหนดพร้อมใช้งานในประสบการณ์การใช้งาน Edge ใหม่ เท่านั้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับที่เก็บข้อมูลจำเพาะ โปรดดูการจัดการและการแชร์ ข้อกำหนดเฉพาะ |
ไม่มี | ไม่ได้ |
TargetServers |
รายการ TargetServers ที่อ้างอิงใน TargetEndpoints ของพร็อกซี API นี้ คุณจะ โดยปกติแล้วจะเห็นองค์ประกอบนี้เมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น นี่เป็นแค่ 'ไฟล์ Manifest' ที่ออกแบบมาเพื่อช่วยให้มองเห็นเนื้อหาของ พร็อกซี API | ไม่มี | ไม่ได้ |
TargetEndpoints |
รายการ TargetEndpoints ในไดเรกทอรี /targets ของพร็อกซี API นี้ คุณ
โดยปกติจะเห็นองค์ประกอบนี้เมื่อสร้างพร็อกซี API โดยใช้ Edge เท่านั้น
UI ของการจัดการ นี่เป็นแค่ 'ไฟล์ 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 Elements
ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
---|---|---|---|
ProxyEndpoint |
|||
name |
ชื่อของ ProxyEndpoint ต้องไม่ซ้ำกันภายในการกำหนดค่าพร็อกซี API เมื่อ
(ในกรณีที่พบไม่บ่อย) มีการกำหนด ProxyEndpoints หลายรายการ อักขระที่คุณได้รับอนุญาตให้ใช้
ในชื่อถูกจำกัดไว้เฉพาะ 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 รายการสำหรับสภาพแวดล้อม VirtualHosts ที่ระบุซึ่งกําหนดให้กับ ProxyEndpoint จะกำหนดโดเมนและพอร์ตใน พร็อกซี API ที่แสดง และ URL ที่แอปใช้เพื่อเรียก API โดยแยกตามส่วนขยาย พร็อกซี โดยค่าเริ่มต้น จะมีการกำหนด VirtualHosts ที่มีชื่อ 2 รายการสำหรับสภาพแวดล้อม ดังนี้
|
ค่าเริ่มต้น | ไม่ได้ |
Properties |
ชุดของการตั้งค่าการกำหนดค่า HTTP ที่ไม่บังคับสามารถกำหนดเป็นพร็อพเพอร์ตี้ของ
<ProxyEndpoint> |
ไม่มี | ไม่ได้ |
FaultRules |
กำหนดวิธีที่ ProxyEndpoint ตอบสนองต่อข้อผิดพลาด กฎความผิดพลาดระบุว่า
รายการ:
|
ไม่มี | ไม่ได้ |
DefaultFaultRule |
จัดการกับข้อผิดพลาด (ระบบ การขนส่ง การรับส่งข้อความ หรือนโยบาย) ที่ไม่ได้แสดงอย่างชัดเจน ถูกจัดการโดยกฎข้อผิดพลาดอื่น |
ไม่มี | ไม่ได้ |
RouteRule |
กำหนดปลายทางของข้อความคำขอขาเข้าหลังจากประมวลผลโดย ไปป์ไลน์คำขอ ProxyEndpoint โดยปกติแล้ว RouteRule จะชี้ไปที่ TargetEndpoint ที่มีชื่อ แต่สามารถชี้ไปยัง URL โดยตรงได้ด้วย | ||
Name |
แอตทริบิวต์ที่ต้องระบุ ซึ่งจะระบุชื่อสำหรับ RouteRule ตัวละครที่คุณเป็น
ได้รับอนุญาตให้ใช้ในชื่อจะถูกจำกัดไว้เฉพาะ A-Za-z0-9._\-$ % สำหรับ
ตัวอย่างเช่น Cat2 %_ เป็นชื่อตามกฎหมาย |
ไม่มี | ใช่ |
Condition |
คำสั่งแบบมีเงื่อนไขที่ไม่บังคับซึ่งใช้สำหรับการกำหนดเส้นทางแบบไดนามิกในช่วงรันไทม์ มีเงื่อนไข RouteRule มีประโยชน์ เช่น เพื่อเปิดใช้การกำหนดเส้นทางตามเนื้อหาเพื่อรองรับแบ็กเอนด์ การกำหนดเวอร์ชัน | ไม่มี | ไม่ได้ |
TargetEndpoint |
สตริงที่ไม่บังคับที่ระบุการกำหนดค่า TargetEndpoint ที่มีชื่อ ชื่อ
TargetEndpoint คือ TargetEndpoint ใดๆ ที่กำหนดไว้ในพร็อกซี API เดียวกันภายใต้
ไดเรกทอรี การตั้งชื่อ TargetEndpoint จะเป็นการระบุว่าควรส่งต่อข้อความคำขอไปยังที่ใด หลังจากประมวลผลโดยไปป์ไลน์คำขอ ProxyEndpoint โปรดทราบว่าตัวเลือกนี้เป็นตัวเลือก การตั้งค่า ProxyEndpoint อาจเรียก URL โดยตรง ตัวอย่างเช่น ทรัพยากร JavaScript หรือ Java ที่ทำงานในบทบาทของไคลเอ็นต์ HTTP อาจทำหน้าที่พื้นฐานของ TargetEndpoint ซึ่งเป็นการส่งต่อคำขอไปยังบริการแบ็กเอนด์ |
ไม่มี | ไม่ได้ |
URL | สตริงที่ไม่บังคับซึ่งกำหนดที่อยู่เครือข่ายขาออกที่การเรียกโดย
ProxyEndpoint โดยข้ามการกำหนดค่า TargetEndpoint ที่อาจจัดเก็บไว้ใน
/targets |
ไม่มี | ไม่ได้ |
วิธีกำหนดค่า RouteRule
TargetEndpoint ที่มีชื่อจะอ้างถึงไฟล์การกำหนดค่าภายใต้ /apiproxy/targets
เพื่อ
ซึ่ง RouteRule จะส่งต่อคำขอหลังจากประมวลผลโดย ProxyEndpoint
เช่น RouteRule ต่อไปนี้จะอ้างถึงการกําหนดค่า
/apiproxy/targets/myTarget.xml
:
<RouteRule name="default"> <TargetEndpoint>myTarget</TargetEndpoint> </RouteRule>
การเรียกใช้ URL โดยตรง
ProxyEndpoint ยังสามารถเรียกใช้บริการแบ็กเอนด์ได้โดยตรงอีกด้วย การเรียกใช้ URL โดยตรงจะข้าม
ตั้งชื่อว่าการกำหนดค่า TargetEndpoints ใน /apiproxy/targets
) ด้วยเหตุนี้
TargetEndpoint คือการกำหนดค่าพร็อกซี API ที่เป็นตัวเลือก แต่ในทางปฏิบัติแล้วจะเป็นการเรียกใช้โดยตรง
ไม่แนะนำให้ใช้ ProxyEndpoint
ตัวอย่างเช่น RouteRule ต่อไปนี้ทำการเรียก HTTP ไปยัง
http://api.mycompany.com/v2
<RouteRule name="default"> <URL>http://api.mycompany.com/v2</URL> </RouteRule>
เส้นทางแบบมีเงื่อนไข
RouteRule สามารถเชื่อมโยงเพื่อรองรับการกำหนดเส้นทางแบบไดนามิกขณะรันไทม์ คําขอขาเข้าอาจเป็น กำหนดเส้นทางไปยังการกำหนดค่า TargetEndpoint ที่มีชื่อ ไปยัง URL โดยตรง หรือไปยัง URL ทั้ง 2 รายการรวมกัน ขึ้นอยู่กับส่วนหัว HTTP เนื้อหาข้อความ พารามิเตอร์การค้นหา หรือข้อมูลบริบท เช่น วัน ภาษา ฯลฯ
RouteRule แบบมีเงื่อนไขจะทำงานเหมือนกับคำสั่งแบบมีเงื่อนไขอื่นๆ ใน 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 ที่เก็บคีย์/ค่า
ตัวอย่างเช่น พารามิเตอร์ต่อไปนี้จะกำหนดเส้นทาง Null
<RouteRule name="GoNowhere"/>
เส้นทาง Null แบบมีเงื่อนไขอาจมีประโยชน์ ในตัวอย่างต่อไปนี้ มีการกำหนดค่าเส้นทาง Null เป็น
ดำเนินการเมื่อส่วนหัว HTTP request.header.X-DoNothing
มีค่าอื่นที่ไม่ใช่
null
<RouteRule name="DoNothingOnDemand"> <Condition>request.header.X-DoNothing != null</Condition> </RouteRule>
อย่าลืมว่า RouteRules สามารถเชื่อมโยงได้ ดังนั้นโดยปกติแล้วเส้นทาง Null แบบมีเงื่อนไขจะเป็น 1 รายการ คอมโพเนนต์ของชุด RouteRules ที่ออกแบบมาเพื่อรองรับการกำหนดเส้นทางแบบมีเงื่อนไข
การใช้งานเส้นทาง Null แบบมีเงื่อนไขที่ใช้ได้จริงจะรองรับการแคช ใช้ค่า ที่นโยบายแคชตั้งค่าไว้ คุณสามารถกำหนดค่าพร็อกซี API เพื่อเรียกใช้ฟิลด์ เส้นทาง Null เมื่อมีการแสดงรายการจากแคช
<RouteRule name="DoNothingUnlessTheCacheIsStale"> <Condition>lookupcache.LookupCache-1.cachehit is true</Condition> </RouteRule>
TargetEndpoint
TargetEndpoint เทียบเท่ากับขาออกของ ProxyEndpoint TargetEndpoint ทำหน้าที่เป็น ไปยังบริการแบ็กเอนด์หรือ API -- ไคลเอ็นต์จะส่งคำขอและรับการตอบกลับ
พร็อกซี API ไม่มี TargetEndpoints สามารถกำหนดค่า ProxyEndpoints ให้เรียก URL โดยตรง ปกติแล้วพร็อกซี API ที่ไม่มี TargetEndpoints จะมี ProxyEndpoint ที่ เรียกใช้บริการแบ็กเอนด์โดยตรง หรือที่ได้รับการกำหนดค่าให้เรียกใช้บริการโดยใช้ Java หรือ JavaScript
การกำหนดค่าปลายทางปลายทาง
/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>
การกำหนดค่าปลายทางปลายทาง Elements
TargetEndpoint สามารถเรียกเป้าหมายด้วยวิธีใดวิธีหนึ่งต่อไปนี้
- HTTPTargetConnection สำหรับการเรียก HTTP(S)
- LocalTargetConnection สำหรับเชนพร็อกซีกับพร็อกซีในเครื่อง
- ScriptTarget สำหรับการเรียกไปยังแพลตฟอร์ม Edge สคริปต์ Node.js
กำหนดค่าเพียงรายการเดียวใน TargetEndpoint
ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
---|---|---|---|
TargetEndpoint |
|||
name |
ชื่อของ TargetEndpoint ซึ่งต้องไม่ซ้ำกันภายในพร็อกซี API
การกำหนดค่า ชื่อของ TargetEndPoint จะใช้ใน ProxyEndpoint RouteRule เพื่อ
คำขอโดยตรงสำหรับการประมวลผลขาออก อักขระที่คุณได้รับอนุญาตให้ใช้ในชื่อ
ถูกจำกัดไว้เฉพาะ A-Za-z0-9._\-$ % |
ไม่มี | ใช่ |
PreFlow |
กำหนดนโยบายในขั้นตอน PreFlow ของคำขอหรือคำตอบ | ไม่มี | ใช่ |
Flows |
กำหนดนโยบายในขั้นตอนแบบมีเงื่อนไขของคำขอหรือคำตอบ
|
ไม่มี | ใช่ |
PostFlow |
กำหนดนโยบายในขั้นตอน PostFlow ของคำขอหรือการตอบกลับ
|
ไม่มี | ใช่ |
HTTPTargetConnection |
เมื่อใช้เอลิเมนต์ย่อย ให้ระบุการเข้าถึงทรัพยากรแบ็กเอนด์ผ่าน HTTP หากใช้ HTTPTargetConnection โปรดอย่ากำหนดค่าการเชื่อมต่อเป้าหมายประเภทอื่นๆ (ScriptTarget หรือ LocalTargetConnection) |
||
URL |
กำหนดที่อยู่เครือข่ายของบริการแบ็กเอนด์ที่ TargetEndpoint ส่งต่อ ข้อความคำขอ | ไม่มี | ไม่ได้ |
LoadBalancer |
ระบุการกำหนดค่า TargetServer อย่างน้อย 1 รายการที่มีชื่อ เซิร์ฟเวอร์เป้าหมายที่มีชื่อ การกำหนดค่าสามารถใช้สำหรับการจัดสรรภาระงานเพื่อกำหนดการกำหนดค่าปลายทาง 2 รายการขึ้นไป การเชื่อมต่อ คุณยังสามารถใช้ TargetServers เพื่อแยกการกำหนดค่าพร็อกซี API ออกจากการกำหนดค่า URL ปลายทางของบริการแบ็กเอนด์ |
ไม่มี | ไม่ได้ |
Properties |
ชุดของการตั้งค่าการกำหนดค่า HTTP ที่ไม่บังคับสามารถกำหนดเป็นพร็อพเพอร์ตี้ของ
<TargetEndpoint> |
ไม่มี | ไม่ได้ |
SSLInfo |
(ไม่บังคับ) กำหนดการตั้งค่า TLS/SSL ใน TargetEndpoint เพื่อควบคุม TLS/SSL ระหว่างพร็อกซี API และบริการเป้าหมาย โปรดดูที่การกำหนดค่า TLS/SSL TargetEndpoint | ไม่มี | ไม่ได้ |
LocalTargetConnection |
เมื่อใช้เอลิเมนต์ย่อย ให้ระบุทรัพยากรที่เข้าถึงได้ในเครื่อง โดยเลี่ยงผ่านเครือข่าย
ในลักษณะต่างๆ เช่น การจัดสรรภาระงานและตัวประมวลผลข้อความ
ในการระบุทรัพยากรเป้าหมาย ให้ใส่องค์ประกอบย่อย APIProxy (ที่มี องค์ประกอบ ProxyEndpoint) หรือองค์ประกอบย่อยของเส้นทาง ดูข้อมูลเพิ่มเติมได้ที่พร็อกซี Chaining API ร่วมกัน หากคุณใช้ LocalTargetConnection โปรดอย่ากำหนดค่าการเชื่อมต่อเป้าหมายประเภทอื่นๆ (HTTPTargetConnection หรือ ScriptTarget) |
||
APIProxy |
ระบุชื่อพร็อกซี API ที่จะใช้เป็นเป้าหมายสำหรับคำขอ พร็อกซีเป้าหมาย ต้องอยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับคำขอที่ส่งคำขอพร็อกซี นี่คือ ทางเลือกนอกเหนือจากการใช้องค์ประกอบเส้นทาง | ไม่มี | ไม่ได้ |
ProxyEndpoint |
ใช้กับ APIProxy เพื่อระบุชื่อของ ProxyEndpoint ของพร็อกซีเป้าหมาย | ไม่มี | ไม่ได้ |
Path |
ระบุเส้นทางปลายทางของพร็อกซี API ที่จะใช้เป็นเป้าหมายสำหรับคำขอ เป้าหมาย พร็อกซีต้องอยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับคำขอที่ส่งคำขอพร็อกซี ช่วงเวลานี้ เป็นอีกทางเลือกหนึ่งนอกเหนือจากการใช้ APIProxy | ไม่มี | ไม่ได้ |
FaultRules |
กำหนดวิธีที่ TargetEndpoint ตอบสนองต่อข้อผิดพลาด กฎความผิดพลาดระบุว่า
รายการ:
|
ไม่มี | ไม่ได้ |
DefaultFaultRule |
จัดการกับข้อผิดพลาด (ระบบ การขนส่ง การรับส่งข้อความ หรือนโยบาย) ที่ไม่ได้แสดงอย่างชัดเจน จัดการโดย FaultRule อื่น |
ไม่มี | ไม่ได้ |
ScriptTarget |
|||
ResourceURL |
กำหนดประเภททรัพยากร (โหนด) และชื่อของสคริปต์ Node.js หลักที่ จะใช้ฟังก์ชันการทำงานของ TargetEndpoint
สคริปต์ต้องรวมอยู่ในไฟล์ทรัพยากรของพร็อกซี API โปรดดูการเพิ่ม Node.js ใน พร็อกซี API ที่มีอยู่ หากใช้ ScriptTarget โปรดอย่ากำหนดค่าการเชื่อมต่อเป้าหมายประเภทอื่นๆ (HTTPTargetConnection หรือ LocalTargetConnection) |
ไม่มี | ใช่ |
EnvironmentVariable |
สามารถเลือกส่งตัวแปรสภาพแวดล้อมไปยังสคริปต์ Node.js หลัก |
ไม่มี | ไม่ได้ |
Arguments |
สามารถเลือกส่งอาร์กิวเมนต์ไปยังสคริปต์ Node.js หลัก |
ไม่มี | ไม่ได้ |
การกำหนดค่า TargetEndpoint สำหรับ TLS/SSL
TargetEndpoints มักต้องจัดการการเชื่อมต่อ HTTPS ที่มีแบ็กเอนด์ที่แตกต่างกัน โครงสร้างพื้นฐาน ด้วยเหตุนี้ ระบบจึงรองรับการตั้งค่าการกำหนดค่า TLS/SSL จำนวนหนึ่ง
TLS/SSL องค์ประกอบการกำหนดค่าปลายทางปลายทาง
ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
---|---|---|---|
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 หากต้องการจำกัดวิธีการเข้ารหัส ให้เพิ่มองค์ประกอบต่อไปนี้ซึ่งแสดงการเข้ารหัสที่รองรับ <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 ไปยังแบ็กเอนด์ (ระบบคลาวด์และ Private Cloud)
การใช้ ตัวแปรโฟลว์เพื่อตั้งค่า TLS/SSL แบบไดนามิก
คุณยังสามารถตั้งค่ารายละเอียด TLS/SSL แบบไดนามิกเพื่อรองรับข้อกำหนดรันไทม์ที่ยืดหยุ่น ตัวอย่างเช่น หากพร็อกซีเชื่อมต่อกับเป้าหมาย 2 รายการที่อาจมีความแตกต่างกัน (เป้าหมายทดสอบและ เวอร์ชันที่ใช้งานจริง) คุณสามารถทำให้พร็อกซี API ตรวจสอบแบบเป็นโปรแกรมได้ว่าเป็นสภาพแวดล้อมใด การเรียกใช้และตั้งค่าการอ้างอิงแบบไดนามิกไปยังคีย์สโตร์และ Truststore ที่เหมาะสม ดังต่อไปนี้ บทความในชุมชน Apigee จะอธิบายสถานการณ์นี้อย่างละเอียดมากขึ้นและให้ API ที่นำไปใช้งานได้ ตัวอย่างพร็อกซี: https://community.apigee.com/articles/21424/dynamic-sslinfo-for-targetendpoint-using-variable.html
ในตัวอย่างต่อไปนี้เกี่ยวกับวิธีตั้งค่าแท็ก <SSLInfo>
ใน
การกำหนดค่า TargetEndpoint สามารถระบุค่าขณะรันไทม์ ตัวอย่างเช่น โดยการใช้ Java
ข้อความไฮไลต์, นโยบาย JavaScript หรือนโยบายมอบหมายข้อความ ใช้ตัวแปรข้อความใดก็ได้
มีค่าที่คุณต้องการตั้งค่า
อนุญาตให้ใช้ตัวแปรในองค์ประกอบต่อไปนี้เท่านั้น
<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 ให้ใช้การอ้างอิงไปยังฟังก์ชัน keystore หรือ Truststore แทน ข้อดีของการใช้ข้อมูลอ้างอิงคือคุณสามารถอัปเดต การอ้างอิงเพื่อชี้ไปยังคีย์สโตร์หรือ Truststore อื่นเพื่ออัปเดตใบรับรอง 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
ข้อมูลอ้างอิงจะระบุชื่อของคีย์สโตร์และประเภทของคีย์สโตร์
ใช้การเรียก GET API ต่อไปนี้เพื่อดูข้อมูลอ้างอิง
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:password
TargetEndpoint ด้วยการจัดสรรภาระงานเป้าหมาย
TargetEndpoints รองรับการจัดสรรภาระงานใน TargetServers ที่มีชื่อหลายรายการโดยใช้โหลด 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>
การกำหนดค่าไฟล์แนบนโยบาย Elements
ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
---|---|---|---|
Step |
|||
Name |
ชื่อของนโยบายที่จะลงนามโดยคำจำกัดความของขั้นตอนนี้ | ไม่มี | ใช่ |
Condition |
ข้อความแบบมีเงื่อนไขที่กำหนดว่าจะบังคับใช้นโยบายหรือไม่ หากมี นโยบายมีเงื่อนไขที่เกี่ยวข้อง จากนั้นนโยบายจะทำงานก็ต่อเมื่อ ก็ประเมินเป็นจริงได้ | ไม่มี | ไม่ได้ |
โฟลว์
ProxyEndpoint และ TargetEndpoint กำหนดไปป์ไลน์สำหรับคำขอและข้อความตอบกลับ การประมวลผล ไปป์ไลน์การประมวลผลประกอบด้วยโฟลว์คำขอและขั้นตอนการตอบกลับ คำขอแต่ละรายการ โฟลว์และขั้นตอนการตอบสนองแบ่งย่อยเป็น PreFlow ซึ่งมี "conditional" ที่ไม่บังคับอย่างน้อย 1 รายการ หรือ "ตั้งชื่อแล้ว" และ PostFlow
- PreFlow: ทำงานเสมอ เรียกใช้ก่อนโฟลว์แบบมีเงื่อนไข
- PostFlow: ทำงานเสมอ ดำเนินการหลังจากโฟลว์แบบมีเงื่อนไข
นอกจากนี้ คุณสามารถเพิ่ม PostClientFlow ลงใน ProxyEndpoint ซึ่งจะทำงานหลังจาก
ระบบจะส่งการตอบสนองไปยังแอปไคลเอ็นต์ที่ขอ เฉพาะนโยบายการบันทึกข้อความและ
แนบส่วนขยาย Google Stackdriver Logging ได้
กับขั้นตอนนี้ 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 จะดำเนินการโฟลว์ตามลำดับต่อไปนี้
ไปป์ไลน์คำขอ:
- ขั้นตอนเบื้องต้นของคำขอพร็อกซี
- ขั้นตอนแบบมีเงื่อนไขของคำขอพร็อกซี (ไม่บังคับ)
- PostFlow ของคำขอพร็อกซี
- ขั้นตอนเบื้องต้นของคำขอเป้าหมาย
- คำขอขั้นตอนแบบมีเงื่อนไขของคำขอเป้าหมาย (ไม่บังคับ)
- PostFlow ของคำขอเป้าหมาย
ไปป์ไลน์การตอบกลับ:
- ขั้นตอนเบื้องต้นของการตอบสนองเป้าหมาย
- ขั้นตอนแบบมีเงื่อนไขของการตอบสนองเป้าหมาย (ไม่บังคับ)
- PostFlow ของการตอบสนองเป้าหมาย
- ขั้นตอนเบื้องต้นการตอบกลับพร็อกซี
- ขั้นตอนแบบมีเงื่อนไขของการตอบกลับพร็อกซี (ไม่บังคับ)
- PostFlow ของการตอบกลับพร็อกซี
- การตอบกลับ PostClientFlow (ไม่บังคับ)
เฉพาะโฟลว์ที่มีไฟล์แนบนโยบายเท่านั้นที่ต้องกำหนดค่าใน ProxyEndpoint หรือ การกำหนดค่า TargetEndpoint ต้องระบุ PreFlow และ PostFlow ใน ProxyEndpoint หรือ การกำหนดค่า TargetEndpoint เมื่อต้องบังคับใช้นโยบายระหว่าง PreFlow หรือ PostFlow การประมวลผล
ซึ่งตรงข้ามกับขั้นตอนแบบมีเงื่อนไข การจัดลำดับองค์ประกอบ PreFlow และ PostFlow ไม่ได้ --พร็อกซี API จะดำเนินการกับแต่ละพร็อกซีในจุดที่เหมาะสมในไปป์ไลน์เสมอ ไม่ว่าจะแสดงอยู่ที่ใดในการกำหนดค่าปลายทาง
ขั้นตอนแบบมีเงื่อนไข
ProxyEndpoints และ TargetEndpoints รองรับขั้นตอนแบบมีเงื่อนไขได้ไม่จำกัดจำนวน (รวมถึง หรือ "ขั้นตอนที่ตั้งชื่อแล้ว")
พร็อกซี 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 นั้นเท่านั้น