ข้อมูลอ้างอิงการกําหนดค่าพร็อกซีของ 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 นี้สอดคล้อง ปัจจุบันค่าที่รองรับคือ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

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

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

/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 (เช่น /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 โดยแยกตามส่วนขยาย พร็อกซี

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

ค่าเริ่มต้น ไม่ได้
Properties ชุดของการตั้งค่าการกำหนดค่า HTTP ที่ไม่บังคับสามารถกำหนดเป็นพร็อพเพอร์ตี้ของ <ProxyEndpoint> ไม่มี ไม่ได้
FaultRules
กำหนดวิธีที่ ProxyEndpoint ตอบสนองต่อข้อผิดพลาด กฎความผิดพลาดระบุว่า รายการ:
  • เงื่อนไขที่ระบุข้อผิดพลาดที่ต้องจัดการโดยอิงตามสิ่งที่กำหนดไว้ล่วงหน้า หมวดหมู่ หมวดหมู่ย่อย หรือชื่อข้อบกพร่อง
  • นโยบายอย่างน้อย 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 เนื้อหาข้อความ พารามิเตอร์การค้นหา หรือข้อมูลบริบท เช่น วัน ภาษา ฯลฯ

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

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

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

ชื่อ คำอธิบาย ค่าเริ่มต้น จำเป็นหรือไม่
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

โดยค่าเริ่มต้น ค่าที่ระบุจะตรงกับชื่อทั่วไปของใบรับรองเป้าหมายทุกประการ เช่น การใช้ *.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 ไปยังแบ็กเอนด์ (ระบบคลาวด์และ 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

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

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

ไม่มี ใช่
enabled

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

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

จริง ไม่ได้
continueOnError

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

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

เท็จ ไม่ได้
async

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

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

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

เท็จ ไม่ได้

ไฟล์แนบนโยบาย

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

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

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

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

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

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

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

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

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