คุณกำลังดูเอกสาร Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
ในฐานะนักพัฒนาซอฟต์แวร์ที่ทำงานร่วมกับ Apigee Edge กิจกรรมการพัฒนาหลักของคุณรวมถึงการกำหนดค่าพร็อกซี API ที่ทำงานเป็นพร็อกซีสำหรับ API หรือบริการแบ็กเอนด์ เอกสารนี้อ้างอิงองค์ประกอบการกำหนดค่าทั้งหมดที่พร้อมให้คุณใช้งานเมื่อสร้างพร็อกซี API
หากคุณกำลังเรียนรู้วิธีสร้างพร็อกซี API ขอแนะนำให้เริ่มต้นด้วยหัวข้อสร้างพร็อกซี API แบบง่าย
วิธีแก้ไขการกำหนดค่าพร็อกซีที่พบบ่อยที่สุดมีดังนี้
- การใช้ตัวแก้ไข XML ภายใน Edge UI
- ดาวน์โหลดการกำหนดค่าและแก้ไขในเครื่อง ตามที่อธิบายไว้ในการพัฒนาการกำหนดค่าพร็อกซีในเครื่อง
การพัฒนาการกำหนดค่าพร็อกซีในเครื่อง
คุณสามารถดาวน์โหลดการกำหนดค่าพร็อกซีเพื่อให้แก้ไขได้ในเครื่อง เมื่อทำเสร็จแล้ว ให้อัปโหลดผลลัพธ์ไปยัง 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 นี้ ค่าที่รองรับในปัจจุบันมีเพียงค่าเดียว นั่นคือ mainVersion 4 และ subVersion 0 ระบบอาจใช้การตั้งค่านี้ในอนาคตเพื่อเปิดใช้วิวัฒนาการของรูปแบบพร็อกซี API | 4.0 | ไม่ได้ |
Description |
คำอธิบายแบบข้อความของพร็อกซี API หากระบุ คำอธิบายจะแสดงใน UI การจัดการ Edge | ไม่มีข้อมูล | ไม่ได้ |
DisplayName |
ชื่อที่ใช้ง่ายซึ่งอาจแตกต่างจากแอตทริบิวต์ name ของการกำหนดค่าพร็อกซี API |
ไม่มีข้อมูล | ไม่ได้ |
Policies |
รายการนโยบายในไดเรกทอรี /policies ของพร็อกซี API นี้ ปกติแล้วคุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น
นี่คือการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อระดับการเข้าถึงเนื้อหาของพร็อกซี API |
ไม่มีข้อมูล | ไม่ได้ |
ProxyEndpoints |
รายการ ProxyEndpoints ในไดเรกทอรี /proxies ของพร็อกซี API นี้ ปกติแล้วคุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น นี่เป็นเพียงการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อช่วยให้เห็นเนื้อหาของพร็อกซี API |
ไม่มีข้อมูล | ไม่ได้ |
Resources |
รายการทรัพยากร (JavaScript, Python, Java, XSLT) ในไดเรกทอรี /resources ของพร็อกซี API นี้ โดยปกติคุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น นี่คือการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อ
ให้มองเห็นเนื้อหาของพร็อกซี API |
ไม่มีข้อมูล | ไม่ได้ |
Spec |
ระบุข้อมูลจำเพาะของ OpenAPI ที่เชื่อมโยงกับพร็อกซี API ค่านี้กำหนดไว้เป็น URL หรือเส้นทางในที่เก็บข้อกำหนด หมายเหตุ: ที่เก็บข้อมูลจำเพาะมีอยู่ในประสบการณ์ New Edge เท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับที่เก็บข้อกำหนดได้ที่การจัดการและการแชร์ข้อกำหนด |
ไม่มีข้อมูล | ไม่ได้ |
TargetServers |
รายการ TargetServers ที่อ้างอิงใน TargetEndpoints ของพร็อกซี API นี้ ปกติแล้วคุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น นี่คือการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อระดับการเข้าถึงเนื้อหาของพร็อกซี API | ไม่มีข้อมูล | ไม่ได้ |
TargetEndpoints |
รายการ TargetEndpoints ในไดเรกทอรี /targets ของพร็อกซี API นี้ ปกติแล้วคุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น นี่เป็นเพียงการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อช่วยให้เห็นเนื้อหาของพร็อกซี API |
ไม่มีข้อมูล | ไม่ได้ |
ProxyEndpoint
รูปภาพต่อไปนี้จะแสดงขั้นตอนการส่งคำขอ/คำตอบ
/apiproxy/proxies/default.xml
การกำหนดค่า ProxyEndpoint จะกำหนดอินเทอร์เฟซขาเข้า (ด้านไคลเอ็นต์) สำหรับพร็อกซี API ในการกำหนดค่า ProxyEndpoint คุณกำลังตั้งค่าการกำหนดค่าเครือข่ายที่กำหนดวิธีที่แอปพลิเคชันไคลเอ็นต์ ("apps") ควรเรียกใช้ 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 เมื่อกำหนด 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 ตามนามสกุล โดยค่าเริ่มต้น จะมีการกำหนด VirtualHost ชื่อ 2 รายการสำหรับสภาพแวดล้อม ได้แก่ |
ค่าเริ่มต้น | ไม่ได้ |
Properties |
คุณกำหนดชุดการตั้งค่าการกำหนดค่า HTTP ที่ไม่บังคับเป็นพร็อพเพอร์ตี้ของ <ProxyEndpoint> ได้ |
ไม่มีข้อมูล | ไม่ได้ |
FaultRules |
กำหนดวิธีที่ ProxyEndpoint ตอบสนองต่อข้อผิดพลาด กฎของข้อผิดพลาดจะระบุรายการ 2 รายการดังนี้
|
ไม่มีข้อมูล | ไม่ได้ |
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, เนื้อหาข้อความ, พารามิเตอร์การค้นหา หรือข้อมูลบริบท เช่น ช่วงเวลาของวัน ภาษา ฯลฯ
Route Rules ทำงานเหมือนกับคำสั่งแบบมีเงื่อนไขอื่นๆ ใน 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
คุณกำหนดกฎเส้นทาง 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>
โปรดทราบว่าคุณเชื่อมโยง RouteRule ได้ ดังนั้นเส้นทาง Null แบบมีเงื่อนไขจึงมักจะเป็นองค์ประกอบหนึ่งของชุด RouteRule ที่ออกแบบมาเพื่อรองรับการกำหนดเส้นทางแบบมีเงื่อนไข
การใช้งานจริงของเส้นทาง 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
การกำหนดค่า 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
โดยกำหนดค่าเพียงรายการใดรายการหนึ่งใน 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 รายการ การกำหนดค่า TargetServer ที่มีชื่อสามารถใช้สำหรับการจัดสรรภาระงานเพื่อกำหนดการเชื่อมต่อการกำหนดค่าปลายทาง 2 รายการขึ้นไป นอกจากนี้ คุณยังใช้ TargetServers เพื่อแยกการกำหนดค่าพร็อกซี API จาก URL ปลายทางบริการแบ็กเอนด์ที่เป็นรูปธรรมได้ด้วย |
ไม่มีข้อมูล | ไม่ได้ |
Properties |
คุณกำหนดชุดการตั้งค่าการกำหนดค่า HTTP ที่ไม่บังคับเป็นพร็อพเพอร์ตี้ของ <TargetEndpoint> ได้ |
ไม่มีข้อมูล | ไม่ได้ |
SSLInfo |
(ไม่บังคับ) กำหนดการตั้งค่า TLS/SSL บน TargetEndpoint เพื่อควบคุมการเชื่อมต่อ TLS/SSL ระหว่างพร็อกซี API และบริการเป้าหมาย โปรดดู TLS/SSL TargetEndpoint Configuration | ไม่มีข้อมูล | ไม่ได้ |
LocalTargetConnection |
เมื่อใช้องค์ประกอบย่อย จะมีการระบุทรัพยากรที่จะเข้าถึงภายในเครื่อง โดยข้ามลักษณะของเครือข่าย เช่น การจัดสรรภาระงานและผู้ประมวลผลข้อความ
หากต้องการระบุทรัพยากรเป้าหมาย ให้ใส่องค์ประกอบย่อย APIProxy (ที่มีองค์ประกอบ ProxyEndpoint) หรือองค์ประกอบย่อยเส้นทาง ดูข้อมูลเพิ่มเติมได้ที่เชนพร็อกซีของ 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
TargetEndpoints มักต้องจัดการการเชื่อมต่อ HTTPS ด้วยโครงสร้างพื้นฐานของแบ็กเอนด์ที่หลากหลาย ด้วยเหตุนี้ ระบบจึงรองรับการตั้งค่าการกำหนดค่า TLS/SSL จำนวนหนึ่ง
TLS/SSL องค์ประกอบการกำหนดค่า TargetEndpoint
ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
---|---|---|---|
SSLInfo |
|||
Enabled |
ระบุว่ามีการเปิดใช้ TLS/SSL สำหรับปลายทางหรือไม่
ค่าเริ่มต้นคือ true หาก <URL> ระบุโปรโตคอล HTTPS และ false หาก <URL> ระบุ HTTP |
จริงหาก <URL> ระบุ HTTPS |
ไม่ได้ |
TrustStore |
คีย์สโตร์ที่มีใบรับรองเซิร์ฟเวอร์ที่เชื่อถือได้ | ไม่มีข้อมูล | ไม่ได้ |
ClientAuthEnabled |
การตั้งค่าที่เปิดการตรวจสอบสิทธิ์ไคลเอ็นต์ขาออก (TLS/SSL แบบ 2 ทาง) | false | ไม่ได้ |
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 ไปยังแบ็กเอนด์ (Cloud และ 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 หรือนโยบาย 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 เพื่อใช้การอ้างอิงไปยังคีย์สโตร์หรือ Truststore แทนได้ ข้อดีของการใช้ข้อมูลอ้างอิงคือคุณสามารถอัปเดตการอ้างอิงให้ชี้ไปยังคีย์สโตร์อื่นหรือ Truststore อื่นเพื่ออัปเดตใบรับรอง TLS/SSL โดยไม่ต้องรีสตาร์ทตัวประมวลผลข้อความ
ตัวอย่างเช่น ตัวอย่างด้านล่างคือ TargetEndpoint ที่ใช้การอ้างอิงไปยังคีย์สโตร์
<SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>false</ClientAuthEnabled> <KeyStore>ref://keystoreref</KeyStore> <KeyAlias>myKeyAlias</KeyAlias> </SSLInfo>
ใช้การเรียก POST API ต่อไปนี้เพื่อสร้างข้อมูลอ้างอิงชื่อ 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 ต่อไปนี้เพื่อดูข้อมูลอ้างอิง
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 รองรับการจัดสรรภาระงานผ่าน TargetServer หลายชื่อหลายตัวที่ใช้อัลกอริทึมการจัดสรรภาระงาน 3 รายการ
สำหรับคำแนะนำโดยละเอียด โปรดดูที่การจัดสรรภาระงานในเซิร์ฟเวอร์แบ็กเอนด์
นโยบาย
ไดเรกทอรี /policies
ในพร็อกซี API มีนโยบายทั้งหมดที่พร้อมแนบกับโฟลว์ในพร็อกซี API
องค์ประกอบการกำหนดค่านโยบาย
ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
---|---|---|---|
Policy |
|||
name |
ชื่อภายในของนโยบาย จำกัดอักขระที่คุณใช้ในชื่อได้ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มีข้อมูล | ใช่ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่ได้ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
false | ไม่ได้ |
async |
หมายเหตุ: แอตทริบิวต์นี้จะไม่ทำให้นโยบายทำงานแบบไม่พร้อมกัน
ในกรณีส่วนใหญ่ ให้ปล่อยไว้ตามค่าเริ่มต้น เมื่อตั้งค่าเป็น หากต้องการใช้ลักษณะการทำงานแบบไม่พร้อมกันในพร็อกซี API โปรดดูโมเดลออบเจ็กต์ JavaScript |
false | ไม่ได้ |
เอกสารแนบนโยบาย
รูปภาพต่อไปนี้แสดงลำดับการดำเนินการของโฟลว์พร็อกซี API
ดังที่แสดงด้านบน
นโยบายจะแนบเป็นขั้นตอนการประมวลผลของโฟลว์ ชื่อของนโยบายใช้เพื่ออ้างอิงถึงนโยบายที่จะบังคับใช้เป็นขั้นตอนการประมวลผล รูปแบบของไฟล์แนบนโยบายมีดังนี้
<Step><Name>MyPolicy</Name></Step>
นโยบายจะบังคับใช้ตามลำดับที่แนบกับโฟลว์ เช่น
<Step><Name>FirstPolicy</Name></Step> <Step><Name>SecondPolicy</Name></Step>
องค์ประกอบการกำหนดค่าไฟล์แนบนโยบาย
ชื่อ | คำอธิบาย | ค่าเริ่มต้น | จำเป็นหรือไม่ |
---|---|---|---|
Step |
|||
Name |
ชื่อของนโยบายที่จะดำเนินการตามคำจำกัดความของขั้นตอนนี้ | ไม่มีข้อมูล | ใช่ |
Condition |
คำสั่งแบบมีเงื่อนไขที่กำหนดว่านโยบายจะถูกบังคับใช้หรือไม่ หากนโยบายมีเงื่อนไขที่เกี่ยวข้อง นโยบายจะดำเนินการเมื่อคำสั่งแบบมีเงื่อนไขมีค่าเป็น "จริง" เท่านั้น | ไม่มีข้อมูล | ไม่ได้ |
ขั้นตอน
ProxyEndpoint และ TargetEndpoint จะกำหนดไปป์ไลน์สำหรับการประมวลผลคำขอและข้อความตอบกลับ ไปป์ไลน์การประมวลผลประกอบด้วยขั้นตอนคำขอและขั้นตอนการตอบกลับ โฟลว์คำขอและขั้นตอนการตอบกลับแต่ละกระบวนการแยกย่อยเป็น PreFlow, ขั้นตอน "conditional" หรือ "named" อย่างน้อย 1 ขั้นตอน และ PostFlow
- PreFlow: ดำเนินการเสมอ ดำเนินการก่อนโฟลว์แบบมีเงื่อนไข
- PostFlow: ดำเนินการเสมอ ทำงานหลังจากโฟลว์แบบมีเงื่อนไข
นอกจากนี้ คุณยังเพิ่ม PostClientFlow ไปยัง ProxyEndpoint ได้ ซึ่งจะดำเนินการหลังจากส่งการตอบกลับไปยังแอปไคลเอ็นต์ที่ส่งคำขอมาแล้ว โดยจะมีเพียงนโยบาย MessageLoking และส่วนขยาย 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 คำขอพร็อกซี
- โฟลว์คำขอเป้าหมายล่วงหน้า
- ขั้นตอนแบบมีเงื่อนไขของคำขอเป้าหมาย (ไม่บังคับ)
- โฟลว์หลังคำขอเป้าหมาย
ไปป์ไลน์การตอบกลับ:
- โฟลว์การตอบสนองเป้าหมายล่วงหน้า
- ขั้นตอนแบบมีเงื่อนไขของการตอบกลับเป้าหมาย (ไม่บังคับ)
- ขั้นตอนหลังการตอบสนองเป้าหมาย
- โฟลว์การตอบกลับพร็อกซีล่วงหน้า
- โฟลว์ที่มีเงื่อนไขของการตอบกลับพร็อกซี (ไม่บังคับ)
- ขั้นตอนหลังการตอบกลับของพร็อกซี
- การตอบกลับ 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 |
ไปป์ไลน์การประมวลผลคำขอหรือการตอบกลับที่กำหนดโดย A 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 ดังกล่าวเท่านั้น