ข้อมูลอ้างอิงการกําหนดค่าพร็อกซีของ API

คุณกำลังดูเอกสาร Apigee Edge
ไปที่เอกสารประกอบของ Apigee X
ข้อมูล

ในฐานะนักพัฒนาซอฟต์แวร์ที่ทำงานร่วมกับ Apigee Edge กิจกรรมการพัฒนาหลักของคุณรวมถึงการกำหนดค่าพร็อกซี API ที่ทำงานเป็นพร็อกซีสำหรับ API หรือบริการแบ็กเอนด์ เอกสารนี้อ้างอิงองค์ประกอบการกำหนดค่าทั้งหมดที่พร้อมให้คุณใช้งานเมื่อสร้างพร็อกซี API

หากคุณกำลังเรียนรู้วิธีสร้างพร็อกซี API ขอแนะนำให้เริ่มต้นด้วยหัวข้อสร้างพร็อกซี API แบบง่าย

วิธีแก้ไขการกำหนดค่าพร็อกซีที่พบบ่อยที่สุดมีดังนี้

การพัฒนาการกำหนดค่าพร็อกซีในเครื่อง

คุณสามารถดาวน์โหลดการกำหนดค่าพร็อกซีเพื่อให้แก้ไขได้ในเครื่อง เมื่อทำเสร็จแล้ว ให้อัปโหลดผลลัพธ์ไปยัง Edge วิธีนี้ช่วยให้คุณผสานรวมการกำหนดค่าพร็อกซีเข้ากับการควบคุมแหล่งที่มา การกำหนดเวอร์ชัน และเวิร์กโฟลว์อื่นๆ ที่แชร์ได้ นอกจากนี้ หากกำหนดค่าพร็อกซีภายในเครื่อง คุณจะใช้ตัวแก้ไข XML และเครื่องมือตรวจสอบของคุณเองได้

หัวข้อนี้จะอธิบายวิธีใช้ UI เพื่อดาวน์โหลดการสร้างพร็อกซีที่มีอยู่ แก้ไข แล้วอัปโหลดกลับไปยัง Edge เพื่อทำให้ใช้งานได้ นอกจากนี้ คุณยังใช้ apigeetool เพื่อดาวน์โหลดและทำให้การกำหนดค่าพร็อกซีใหม่ใช้งานได้ (โดยใช้คำสั่ง fetchproxy และ deployproxy ตามลำดับ)

วิธีแก้ไขการกำหนดค่าพร็อกซีในเครื่องโดยใช้ UI

  1. ดาวน์โหลดการกำหนดค่าพร็อกซีปัจจุบันใน Edge UI (ในมุมมองพร็อกซี API ให้เลือกโปรเจ็กต์ > ดาวน์โหลดการแก้ไข)
  2. สร้างไดเรกทอรีใหม่และขยายไฟล์ ZIP ที่ดาวน์โหลดไว้ในเครื่อง

    หากต้องการขยายไฟล์ ZIP ให้ใช้ยูทิลิตี เช่น unzip ตามตัวอย่างต่อไปนี้

    mkdir myappdir
    unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir

    เนื้อหาที่ขยายของไฟล์ ZIP ควรคล้ายกับโครงสร้างที่อธิบายไว้ในโครงสร้างพร็อกซี API

  3. แก้ไขไฟล์ต้นฉบับตามที่จำเป็น อ่านคำอธิบายไฟล์ต้นทางในการกำหนดค่าพร็อกซีได้ที่ไฟล์การกำหนดค่าและโครงสร้างไดเรกทอรีของพร็อกซี API

    ตัวอย่างเช่น หากต้องการเปิดใช้การตรวจสอบประสิทธิภาพการทำงานในพร็อกซี API ให้แก้ไขไฟล์การกำหนดค่า TargetEndpoint ในไดเรกทอรี /apiproxy/targets/ ไฟล์เริ่มต้นในไดเรกทอรีนี้คือ default.xml แม้ว่าอาจมีไฟล์ที่มีชื่อต่างกันหากคุณใช้เป้าหมายแบบมีเงื่อนไข

    ในกรณีนี้ หากไม่มีไฟล์การกำหนดค่า TargetEndpoint และไดเรกทอรีอยู่ ให้สร้างขึ้นมา

  4. หลังจากแก้ไขไฟล์การกำหนดค่าพร็อกซีเสร็จแล้ว โปรดบันทึกการเปลี่ยนแปลง
  5. เปลี่ยนเป็นไดเรกทอรีใหม่ที่คุณสร้างขึ้นเมื่อขยายไฟล์ ZIP (รากของไฟล์การกำหนดค่าที่ขยาย)

    เช่น หากคุณขยายไฟล์ลงในไดเรกทอรี /myappdir ให้เปลี่ยนเป็นไดเรกทอรีนั้นตามตัวอย่างต่อไปนี้

    cd myappdir

    คุณควรเปลี่ยนเป็นไดเรกทอรีนี้ก่อนที่จะเก็บไฟล์การกำหนดค่าพร็อกซีอีกครั้ง เนื่องจากไม่ต้องการให้ไดเรกทอรี /myappdir รวมอยู่ในไฟล์ ZIP ไดเรกทอรีระดับบนสุดในไฟล์ ZIP ต้องเป็น /apiproxy

  6. เก็บไฟล์การกำหนดค่าพร็อกซีอีกครั้ง รวมถึงไฟล์ใหม่หรือไฟล์ที่มีการเปลี่ยนแปลง คุณใช้ยูทิลิตีได้ เช่น zip ตามตัวอย่างต่อไปนี้
    zip my-new-proxy.zip -r .

    ไดเรกทอรีระดับบนสุดในไฟล์ ZIP ต้องเป็น /apiproxy

    ไม่มีข้อกำหนดพิเศษสำหรับชื่อไฟล์ ZIP เช่น คุณไม่จำเป็นต้องเพิ่มหมายเลขการแก้ไขหรือระบุวันที่ในชื่อไฟล์ แต่วิธีนี้อาจเป็นประโยชน์สำหรับการแก้ไขข้อบกพร่องหรือการควบคุมแหล่งที่มา

    Edge จะเพิ่มจำนวนการแก้ไขของการกำหนดค่าพร็อกซีใหม่เมื่อคุณอัปโหลด

  7. อัปโหลดการกำหนดค่าพร็อกซีใหม่โดยใช้ Edge UI (ในมุมมองพร็อกซี API ให้เลือกโปรเจ็กต์ > อัปโหลดการแก้ไขใหม่)

    หากได้รับข้อผิดพลาด เช่น Bundle is invalid. Empty bundle. ให้ตรวจสอบว่าไดเรกทอรีระดับบนสุดของไฟล์ ZIP คือ /apiproxy หากไม่ใช่ ให้เก็บไฟล์การกำหนดค่าพร็อกซีจากรูทของไดเรกทอรีแบบขยายอีกครั้ง

    หลังจากอัปโหลดการกำหนดค่าพร็อกซีใหม่แล้ว Edge จะเพิ่มหมายเลขการแก้ไขและแสดงในมุมมองสรุปการแก้ไข

    Edge ไม่ได้ทำให้การแก้ไขใหม่ใช้งานได้หลังจากที่คุณอัปโหลดการแก้ไขด้วย UI

  8. ทำให้การแก้ไขใหม่ใช้งานได้

ดูข้อมูลเพิ่มเติมได้ที่บทแนะนำ: วิธีดาวน์โหลดพร็อกซีโดยใช้ UI และ API การจัดการในชุมชน Apigee

โครงสร้างพร็อกซี API

พร็อกซี API ประกอบด้วยการกำหนดค่าต่อไปนี้

การกำหนดค่าฐาน การตั้งค่าหลักสำหรับพร็อกซี API ดูการกำหนดค่าพื้นฐาน
การกำหนดค่า ProxyEndpoint การตั้งค่าสำหรับการเชื่อมต่อ HTTP ขาเข้า (ตั้งแต่การขอแอปไปจนถึง Apigee Edge) ขั้นตอนคำขอและการตอบกลับ และไฟล์แนบเกี่ยวกับนโยบาย โปรดดู ProxyEndpoint
การกำหนดค่า TargetEndpoint การตั้งค่าสำหรับการเชื่อมต่อ HTTP ขาออก (จาก Apigee Edge ไปยังบริการแบ็กเอนด์) โฟลว์คำขอและการตอบกลับ รวมถึงไฟล์แนบเกี่ยวกับนโยบาย โปรดดู TargetEndpoint
ขั้นตอน คำขอ ProxyEndpoint และ TargetEndpoint และไปป์ไลน์การตอบกลับที่แนบนโยบายได้ ดูโฟลว์
นโยบาย ไฟล์การกำหนดค่าในรูปแบบ XML ซึ่งสอดคล้องกับสคีมานโยบาย Apigee Edge ดูนโยบาย
แหล่งข้อมูล สคริปต์ ไฟล์ JAR และไฟล์ XSLT ที่นโยบายอ้างอิงเพื่อเรียกใช้ตรรกะที่กำหนดเอง ดูแหล่งข้อมูล

โครงสร้างและเนื้อหาไดเรกทอรีพร็อกซี API

คอมโพเนนต์ในตารางด้านบนจะกำหนดโดยไฟล์การกำหนดค่าในโครงสร้างไดเรกทอรีต่อไปนี้

แสดงโครงสร้างไดเรกทอรีที่ apiproxy เป็นรูท ใต้ไดเรกทอรี apiproxy โดยตรงจะมีไดเรกทอรีนโยบาย พร็อกซี ทรัพยากร และเป้าหมาย รวมถึงไฟล์ weatherapi.xml

ไฟล์การกำหนดค่าและโครงสร้างไดเรกทอรีของพร็อกซี 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

รูปภาพต่อไปนี้จะแสดงขั้นตอนการส่งคำขอ/คำตอบ

แสดงไคลเอ็นต์ที่เรียกบริการ HTTP คำขอจะดำเนินการผ่านปลายทางของพร็อกซี จากนั้นไปยังปลายทางเป้าหมายก่อนที่บริการ HTTP จะประมวลผล การตอบสนองจะดำเนินการผ่านปลายทางเป้าหมายและปลายทางของพร็อกซีก่อนที่จะส่งคืนไปยังไคลเอ็นต์

/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 (เช่น /weather) ที่ต่อท้าย URL พื้นฐานของพร็อกซี API (เช่น http://apifactory-test.apigee.net) BasePath ต้องไม่ซ้ำกันภายในสภาพแวดล้อม ระบบจะตรวจสอบความไม่ซ้ำกันเมื่อมีการสร้างหรือนำเข้าพร็อกซี API

การใช้ไวลด์การ์ดในเส้นทางฐาน

คุณใช้ไวลด์การ์ด "*" อย่างน้อย 1 รายการในเส้นทางฐานพร็อกซี API ได้ ตัวอย่างเช่น เส้นทางฐานของ /team/*/members จะช่วยให้ไคลเอ็นต์เรียกใช้ https://[host]/team/blue/members และ https://[host]/team/green/members ได้โดยที่คุณไม่ต้องสร้างพร็อกซี API ใหม่เพื่อสนับสนุนทีมใหม่ โปรดทราบว่าระบบไม่รองรับ /**/

สำคัญ: Apigee ไม่รองรับการใช้ไวลด์การ์ด "*" เป็นองค์ประกอบแรกของเส้นทางฐาน ตัวอย่างเช่น "ไม่รองรับ" /*/search การเริ่มเส้นทางฐานด้วย "*" อาจทำให้เกิดข้อผิดพลาดที่ไม่คาดคิดเนื่องจาก Edge ระบุเส้นทางที่ถูกต้อง

/ ใช่
VirtualHost

เชื่อมโยงพร็อกซี API กับ URL ฐานที่ระบุสำหรับสภาพแวดล้อม VirtualHost คือการกำหนดค่าที่มีชื่อซึ่งกำหนด URL อย่างน้อย 1 รายการสำหรับสภาพแวดล้อม

VirtualHosts ที่มีชื่อซึ่งกำหนดสำหรับ ProxyEndpoint จะเป็นตัวกำหนดโดเมนและพอร์ตที่แสดงพร็อกซี API และ URL ที่แอปใช้เพื่อเรียกใช้พร็อกซี API ตามนามสกุล

โดยค่าเริ่มต้น จะมีการกำหนด VirtualHost ชื่อ 2 รายการสำหรับสภาพแวดล้อม ได้แก่ default และ secure องค์กรอาจกำหนดโดเมนที่กำหนดเองอีกด้วย เช่น หากต้องการตรวจสอบว่าพร็อกซี API พร้อมใช้งานผ่าน HTTPS เท่านั้น ให้ตั้งค่า VirtualHost ใน HTTPProxyConnection เป็น secure

ค่าเริ่มต้น ไม่ได้
Properties คุณกำหนดชุดการตั้งค่าการกำหนดค่า HTTP ที่ไม่บังคับเป็นพร็อพเพอร์ตี้ของ <ProxyEndpoint> ได้ ไม่มีข้อมูล ไม่ได้
FaultRules
กำหนดวิธีที่ ProxyEndpoint ตอบสนองต่อข้อผิดพลาด กฎของข้อผิดพลาดจะระบุรายการ 2 รายการดังนี้
  • เงื่อนไขที่ระบุความผิดที่ต้องจัดการตามหมวดหมู่ หมวดหมู่ย่อย หรือชื่อของความผิดที่กำหนดไว้ล่วงหน้า
  • นโยบายอย่างน้อย 1 รายการที่กำหนดลักษณะการทำงานของกฎข้อบกพร่องสำหรับเงื่อนไขที่เกี่ยวข้อง

ดูการจัดการข้อผิดพลาด

ไม่มีข้อมูล ไม่ได้
DefaultFaultRule

จัดการข้อผิดพลาดทั้งหมด (ระบบ การรับส่งข้อมูล การรับส่งข้อความ หรือนโยบาย) ที่ไม่ได้จัดการโดยกฎความผิดอื่นอย่างชัดเจน

ดูการจัดการข้อผิดพลาด

ไม่มีข้อมูล ไม่ได้
RouteRule กำหนดปลายทางของข้อความคำขอขาเข้าหลังจากประมวลผลโดยไปป์ไลน์คำขอ ProxyEndpoint โดยปกติแล้ว RouteRule จะชี้ไปยังการกำหนดค่า TargetEndpoint ชื่อ แต่ก็ชี้ไปยัง URL โดยตรงได้เช่นกัน
Name แอตทริบิวต์ที่จำเป็น ซึ่งจะระบุชื่อสำหรับ RouteRule เราจำกัดอักขระที่คุณได้รับอนุญาตให้ใช้ในชื่อ A-Za-z0-9._\-$ % ได้ เช่น Cat2 %_ เป็นชื่อตามกฎหมาย ไม่มีข้อมูล ใช่
Condition คำสั่งแบบมีเงื่อนไขที่ไม่บังคับสำหรับการกำหนดเส้นทางแบบไดนามิกที่รันไทม์ RouteRule มีประโยชน์ เช่น การเปิดใช้การกำหนดเส้นทางที่อิงตามเนื้อหาเพื่อรองรับการกำหนดเวอร์ชันแบ็กเอนด์ ไม่มีข้อมูล ไม่ได้
TargetEndpoint

สตริงที่ไม่บังคับซึ่งระบุการกำหนดค่า TargetEndpoint ชื่อ TargetEndpoint ที่มีชื่อคือ TargetEndpoint ที่กําหนดในพร็อกซี API เดียวกันภายใต้ไดเรกทอรี /targets

การตั้งชื่อ 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

แสดงไคลเอ็นต์ที่เรียกบริการ HTTP คำขอจะดำเนินการผ่านปลายทางของพร็อกซี จากนั้นไปยังปลายทางเป้าหมายก่อนที่บริการ HTTP จะประมวลผล การตอบสนองจะดำเนินการผ่านปลายทางเป้าหมายและปลายทางของพร็อกซีก่อนที่จะส่งคืนไปยังไคลเอ็นต์

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 รายการดังนี้
  • เงื่อนไขที่ระบุความผิดที่ต้องจัดการตามหมวดหมู่ หมวดหมู่ย่อย หรือชื่อของความผิดที่กำหนดไว้ล่วงหน้า
  • นโยบายอย่างน้อย 1 รายการที่กำหนดลักษณะการทำงานของกฎข้อบกพร่องสำหรับเงื่อนไขที่เกี่ยวข้อง

ดูการจัดการข้อผิดพลาด

ไม่มีข้อมูล ไม่ได้
DefaultFaultRule

จัดการข้อผิดพลาด (ระบบ การรับส่งข้อมูล การรับส่งข้อความ หรือนโยบาย) ที่ไม่ได้จัดการโดย FaultRule อื่นอย่างชัดเจน

ดูการจัดการข้อผิดพลาด

ไม่มีข้อมูล ไม่ได้
ScriptTarget
ResourceURL

กำหนดประเภททรัพยากร (โหนด) และชื่อของสคริปต์ Node.js หลักที่ติดตั้งใช้งานฟังก์ชันการทำงาน TargetEndpoint

<ResourceURL>node://server.js</ResourceURL>

ต้องรวมสคริปต์ไว้กับไฟล์ทรัพยากรของพร็อกซี API ดูการเพิ่ม Node.js ไปยังพร็อกซี API ที่มีอยู่

หากใช้ ScriptTarget โปรดอย่ากำหนดค่าการเชื่อมต่อเป้าหมายประเภทอื่นๆ (HTTPTargetConnection หรือ LocalTargetConnection)

ไม่มีข้อมูล ใช่
EnvironmentVariable

เลือกส่งตัวแปรสภาพแวดล้อมไปยังสคริปต์ Node.js หลัก

โปรดดูการทำความเข้าใจการรองรับ Edge สำหรับโมดูล Node.js

ไม่มีข้อมูล ไม่ได้
Arguments

คุณสามารถเลือกส่งอาร์กิวเมนต์ไปยังสคริปต์ Node.js หลักได้

โปรดดูการทำความเข้าใจการรองรับ Edge สำหรับโมดูล 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

โดยค่าเริ่มต้น ค่าที่ระบุจะตรงกับชื่อทั่วไปของใบรับรองเป้าหมายทุกประการ เช่น การใช้ *.myhost.com เป็นค่าสำหรับ <CommonName> จะจับคู่และตรวจสอบชื่อโฮสต์เป้าหมายหากมีการระบุค่า *.myhost.com ที่ตรงกันเป็นชื่อทั่วไปในใบรับรองเป้าหมายเท่านั้น

นอกจากนี้ Apigee ยังเลือกดำเนินการจับคู่กับไวลด์การ์ดได้โดยใช้แอตทริบิวต์ wildcardMatch

เช่น ระบบจะจับคู่และตรวจสอบชื่อทั่วไปที่ระบุเป็น abc.myhost.com ในใบรับรองเป้าหมาย หากมีการระบุองค์ประกอบ <CommonName> ดังนี้

<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

ชื่อภายในของนโยบาย จำกัดอักขระที่คุณใช้ในชื่อได้ A-Za-z0-9._\-$ % แต่ UI การจัดการ Edge จะบังคับใช้ข้อจำกัดเพิ่มเติม เช่น การนำอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันออกโดยอัตโนมัติ

(ไม่บังคับ) ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกำกับนโยบายในตัวแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

ไม่มีข้อมูล ใช่
enabled

ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อ "ปิด" นโยบาย ระบบจะไม่บังคับใช้นโยบายนี้แม้ว่าจะยังแนบอยู่กับขั้นตอนก็ตาม

จริง ไม่ได้
continueOnError

ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว ซึ่งเป็นลักษณะการทำงานที่คาดไว้ของนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้การดำเนินการโฟลว์ดำเนินต่อไปได้แม้นโยบายจะล้มเหลวก็ตาม

false ไม่ได้
async

หมายเหตุ: แอตทริบิวต์นี้จะไม่ทำให้นโยบายทำงานแบบไม่พร้อมกัน ในกรณีส่วนใหญ่ ให้ปล่อยไว้ตามค่าเริ่มต้น false

เมื่อตั้งค่าเป็น true ระบบจะนำการดำเนินการนโยบายไปยังเทรดอื่น ทำให้เทรดหลักไม่มีอิสระในการจัดการคำขอเพิ่มเติม เมื่อการประมวลผลแบบออฟไลน์เสร็จสมบูรณ์ เทรดหลักจะกลับมาจัดการโฟลว์ข้อความจนเสร็จสิ้น ในบางกรณี การตั้งค่าอะซิงโครนัสเป็น true จะช่วยปรับปรุงประสิทธิภาพของพร็อกซี API อย่างไรก็ตาม การใช้อะซิงโครนัสมากเกินไปอาจส่งผลเสียต่อประสิทธิภาพเมื่อมีการสลับเทรดมากเกินไป

หากต้องการใช้ลักษณะการทำงานแบบไม่พร้อมกันในพร็อกซี API โปรดดูโมเดลออบเจ็กต์ JavaScript

false ไม่ได้

เอกสารแนบนโยบาย

รูปภาพต่อไปนี้แสดงลำดับการดำเนินการของโฟลว์พร็อกซี API

แสดงไคลเอ็นต์ที่เรียกบริการ HTTP คำขอพบ ProxyEndpoint และ TargetEndpoint ซึ่งแต่ละรายการจะมีขั้นตอนที่ทริกเกอร์นโยบาย หลังจากที่บริการ HTTP แสดงผลการตอบกลับแล้ว TargetEndpoint จะประมวลผลการตอบสนอง จากนั้นส่ง ProxyEndpoing กลับไปยังไคลเอ็นต์ การตอบกลับจะได้รับการประมวลผลโดยนโยบายภายในขั้นตอนเช่นเดียวกับคําขอ

ดังที่แสดงด้านบน

นโยบายจะแนบเป็นขั้นตอนการประมวลผลของโฟลว์ ชื่อของนโยบายใช้เพื่ออ้างอิงถึงนโยบายที่จะบังคับใช้เป็นขั้นตอนการประมวลผล รูปแบบของไฟล์แนบนโยบายมีดังนี้

<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 จะดำเนินการโฟลว์ตามลำดับต่อไปนี้

ไปป์ไลน์คำขอ:

  1. โฟลว์คำขอพร็อกซีล่วงหน้า
  2. โฟลว์แบบมีเงื่อนไขของคำขอพร็อกซี (ไม่บังคับ)
  3. PostFlow คำขอพร็อกซี
  4. โฟลว์คำขอเป้าหมายล่วงหน้า
  5. ขั้นตอนแบบมีเงื่อนไขของคำขอเป้าหมาย (ไม่บังคับ)
  6. โฟลว์หลังคำขอเป้าหมาย

ไปป์ไลน์การตอบกลับ:

  1. โฟลว์การตอบสนองเป้าหมายล่วงหน้า
  2. ขั้นตอนแบบมีเงื่อนไขของการตอบกลับเป้าหมาย (ไม่บังคับ)
  3. ขั้นตอนหลังการตอบสนองเป้าหมาย
  4. โฟลว์การตอบกลับพร็อกซีล่วงหน้า
  5. โฟลว์ที่มีเงื่อนไขของการตอบกลับพร็อกซี (ไม่บังคับ)
  6. ขั้นตอนหลังการตอบกลับของพร็อกซี
  7. การตอบกลับ 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 ดังกล่าวเท่านั้น