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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

แสดงโครงสร้างไดเรกทอรีที่ 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 และ minorVersion 0 การตั้งค่านี้อาจใช้ในอนาคตเพื่อเปิดใช้การพัฒนารูปแบบพร็อกซี API 4.0 ไม่
Description คำอธิบายแบบข้อความของพร็อกซี API หากระบุไว้ คำอธิบายจะแสดงใน UI การจัดการ Edge ไม่มี ไม่
DisplayName ชื่อที่ใช้งานง่ายซึ่งอาจแตกต่างจากแอตทริบิวต์ name ของ การกำหนดค่าพร็อกซี API ไม่มี ไม่
Policies รายการนโยบายในไดเรกทอรี /policies ของพร็อกซี API นี้ โดยปกติแล้ว คุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อให้มองเห็นเนื้อหาของ พร็อกซี API ไม่มี ไม่
ProxyEndpoints รายการ ProxyEndpoint ในไดเรกทอรี /proxies ของพร็อกซี API นี้ คุณ มักจะเห็นองค์ประกอบนี้เมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อให้มองเห็น เนื้อหาของพร็อกซี API ไม่มี ไม่
Resources รายการทรัพยากร (JavaScript, Python, Java, XSLT) ในไดเรกทอรี /resources ของพร็อกซี API นี้ โดยปกติแล้ว คุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อมีการสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อ ให้มองเห็นเนื้อหาของพร็อกซี API ไม่มี ไม่
Spec ระบุข้อกำหนด OpenAPI ที่เชื่อมโยงกับพร็อกซี API ค่า จะตั้งเป็น URL หรือเส้นทางในร้านค้าที่ระบุ

หมายเหตุ: ร้านค้าข้อมูลจำเพาะพร้อมให้บริการในประสบการณ์การใช้งาน Edge ใหม่ เท่านั้น ดูข้อมูลเพิ่มเติมเกี่ยวกับร้านค้าข้อกำหนดได้ที่การจัดการและการแชร์ ข้อกำหนด
ไม่มี ไม่
TargetServers รายการ TargetServer ที่อ้างอิงใน TargetEndpoint ของพร็อกซี API นี้ โดยปกติแล้ว คุณจะเห็นองค์ประกอบนี้ก็ต่อเมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อให้มองเห็นเนื้อหาของ พร็อกซี API ไม่มี ไม่
TargetEndpoints รายการ TargetEndpoint ในไดเรกทอรี /targets ของพร็อกซี API นี้ คุณ มักจะเห็นองค์ประกอบนี้เมื่อสร้างพร็อกซี API โดยใช้ UI การจัดการ Edge เท่านั้น ซึ่งเป็นการตั้งค่า "ไฟล์ Manifest" ที่ออกแบบมาเพื่อให้มองเห็น เนื้อหาของพร็อกซี API ไม่มี ไม่

ProxyEndpoint

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

แสดงไคลเอ็นต์ที่เรียกใช้บริการ HTTP
 คำขอจะผ่านปลายทางของพร็อกซีและปลายทางเป้าหมายก่อนที่บริการ 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 องค์ประกอบ

ชื่อ คำอธิบาย ค่าเริ่มต้น จำเป็นหรือไม่
ProxyEndpoint
name ชื่อของ ProxyEndpoint ต้องไม่ซ้ำกันในการกำหนดค่าพร็อกซี API เมื่อมีการกำหนด ProxyEndpoint หลายรายการ (ในกรณีที่พบได้ยาก) อักขระที่คุณใช้ได้ ในชื่อจะจำกัดไว้เฉพาะอักขระต่อไปนี้ 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 รายการสำหรับสภาพแวดล้อม

VirtualHost ที่มีชื่อซึ่งกำหนดไว้สำหรับ 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 คำสั่งแบบมีเงื่อนไขที่ไม่บังคับซึ่งใช้สำหรับการกำหนดเส้นทางแบบไดนามิกระหว่างรันไทม์ Conditional RouteRules มีประโยชน์ เช่น ในการเปิดใช้การกำหนดเส้นทางตามเนื้อหาเพื่อรองรับการควบคุมเวอร์ชันของแบ็กเอนด์ ไม่มี ไม่
TargetEndpoint

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

การตั้งชื่อ TargetEndpoint จะเป็นการระบุตำแหน่งที่ควรส่งต่อข้อความคำขอ หลังจากที่ไปป์ไลน์คำขอ ProxyEndpoint ประมวลผลแล้ว โปรดทราบว่าการตั้งค่านี้เป็นแบบไม่บังคับ

ProxyEndpoint อาจเรียกใช้ URL โดยตรง เช่น ทรัพยากร JavaScript หรือ Java ซึ่งทําหน้าที่เป็นไคลเอ็นต์ HTTP อาจทําหน้าที่พื้นฐานของ TargetEndpoint ซึ่งก็คือการส่งต่อคําขอไปยังบริการแบ็กเอนด์

ไม่มี ไม่
URL สตริงที่ไม่บังคับซึ่งกำหนดที่อยู่เครือข่ายขาออกที่เรียกโดย ProxyEndpoint โดยข้ามการกำหนดค่า TargetEndpoint ที่อาจจัดเก็บไว้ใน /targets ไม่มี ไม่

วิธีกำหนดค่า RouteRules

TargetEndpoint ที่มีชื่อหมายถึงไฟล์การกำหนดค่าใน /apiproxy/targets ซึ่ง RouteRule จะส่งต่อคำขอหลังจากที่ ProxyEndpoint ประมวลผลแล้ว

ตัวอย่างเช่น RouteRule ต่อไปนี้อ้างอิงถึงการกำหนดค่า /apiproxy/targets/myTarget.xml

<RouteRule name="default">
  <TargetEndpoint>myTarget</TargetEndpoint>
</RouteRule>

การเรียกใช้ URL โดยตรง

นอกจากนี้ ProxyEndpoint ยังเรียกใช้บริการแบ็กเอนด์ได้โดยตรงด้วย การเรียกใช้ URL โดยตรงจะข้ามการกำหนดค่า TargetEndpoint ที่มีชื่อภายใต้ /apiproxy/targets) ด้วยเหตุนี้ TargetEndpoint จึงเป็นการกำหนดค่าพร็อกซี API ที่ไม่บังคับ แม้ว่าในทางปฏิบัติแล้ว เราไม่แนะนำให้เรียกใช้โดยตรงจาก ProxyEndpoint

ตัวอย่างเช่น RouteRule ต่อไปนี้จะเรียกใช้ HTTP ไปยัง http://api.mycompany.com/v2

<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL>
</RouteRule>

เส้นทางแบบมีเงื่อนไข

สามารถเชื่อมโยง RouteRules เพื่อรองรับการกำหนดเส้นทางแบบไดนามิกในขณะรันไทม์ คำขอขาเข้าสามารถ กำหนดเส้นทางไปยังการกำหนดค่า TargetEndpoint ที่มีชื่อ ไปยัง URL โดยตรง หรือไปยังการรวมกันของทั้ง 2 อย่าง โดยอิงตามส่วนหัว HTTP, เนื้อหาข้อความ, พารามิเตอร์การค้นหา หรือข้อมูลตามบริบท เช่น เวลาของ วัน, ภาษา ฯลฯ

Conditional RouteRules ทำงานเหมือนกับคำสั่งแบบมีเงื่อนไขอื่นๆ ใน Apigee Edge ดูข้อมูลอ้างอิงเกี่ยวกับเงื่อนไขและข้อมูลอ้างอิงเกี่ยวกับตัวแปร

ตัวอย่างเช่น การรวมกันของ RouteRule ต่อไปนี้จะประเมินคำขอขาเข้าก่อนเพื่อยืนยัน ค่าของส่วนหัว HTTP หากส่วนหัว HTTP routeTo มีค่า TargetEndpoint1 ระบบจะส่งต่อคำขอไปยัง TargetEndpoint ที่ชื่อ TargetEndpoint1 หากไม่ได้ระบุ ระบบจะส่งต่อคำขอขาเข้าไปยัง http://api.mycompany.com/v2

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL>
</RouteRule>

เส้นทาง Null

คุณกำหนด RouteRule ที่เป็น Null เพื่อรองรับสถานการณ์ที่ข้อความคำขอไม่จำเป็นต้องส่งต่อ ไปยัง TargetEndpoint ได้ ซึ่งจะมีประโยชน์เมื่อ ProxyEndpoint ทำการประมวลผลที่จำเป็นทั้งหมด เช่น การใช้ JavaScript เพื่อเรียกใช้บริการภายนอก หรือการดึงข้อมูลจากการค้นหาไปยังที่เก็บคีย์/ค่าของบริการ API

เช่น การกำหนดเส้นทางที่ไม่มีค่ามีดังนี้

<RouteRule name="GoNowhere"/>

เส้นทางที่กำหนดค่าเป็น Null แบบมีเงื่อนไขอาจมีประโยชน์ ในตัวอย่างต่อไปนี้ มีการกำหนดค่าเส้นทาง Null ให้ ดำเนินการเมื่อส่วนหัว HTTP request.header.X-DoNothing มีค่าอื่นที่ไม่ใช่ null

<RouteRule name="DoNothingOnDemand">
  <Condition>request.header.X-DoNothing != null</Condition>
</RouteRule>

โปรดทราบว่า RouteRules สามารถเชื่อมโยงกันได้ ดังนั้น Route ที่เป็น Null แบบมีเงื่อนไขจึงมักเป็นคอมโพเนนต์หนึ่งของชุด RouteRules ที่ออกแบบมาเพื่อรองรับการกำหนดเส้นทางแบบมีเงื่อนไข

การใช้เส้นทาง Null แบบมีเงื่อนไขในทางปฏิบัติคือการรองรับการแคช การใช้ค่า ของตัวแปรที่ตั้งค่านโยบายแคช คุณสามารถกำหนดค่าพร็อกซี API ให้ดำเนินการ เส้นทาง Null เมื่อแสดงรายการจากแคช

<RouteRule name="DoNothingUnlessTheCacheIsStale">
  <Condition>lookupcache.LookupCache-1.cachehit is true</Condition>
</RouteRule>

TargetEndpoint

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

TargetEndpoint คือเทียบเท่าขาออกของ ProxyEndpoint TargetEndpoint ทำหน้าที่เป็นไคลเอ็นต์สำหรับบริการแบ็กเอนด์หรือ API โดยจะส่งคำขอและรับการตอบกลับ

พร็อกซี API ไม่จำเป็นต้องมี TargetEndpoint คุณกำหนดค่า ProxyEndpoints ให้เรียก URL ได้โดยตรง พร็อกซี API ที่ไม่มี TargetEndpoints มักจะมี ProxyEndpoint ที่ เรียกใช้บริการแบ็กเอนด์โดยตรง หรือได้รับการกำหนดค่าให้เรียกใช้บริการโดยใช้ Java หรือ JavaScript

การกำหนดค่า TargetEndpoint

/targets/default.xml

TargetEndpoint จะกำหนดการเชื่อมต่อขาออกจาก Apigee Edge ไปยังบริการหรือ ทรัพยากรอื่น

ตัวอย่างการกำหนดค่า TargetEndpoint มีดังนี้

<TargetEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <SSLInfo/>
  </HTTPTargetConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <ScriptTarget/>
  <LocalTargetConnection/>
</TargetEndpoint>

การกำหนดค่า TargetEndpoint องค์ประกอบ

TargetEndpoint สามารถเรียกเป้าหมายได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้

  • HTTPTargetConnection สำหรับการเรียก HTTP(S)
  • LocalTargetConnection สำหรับการเชื่อมโยงพร็อกซีกับพร็อกซีในเครื่อง
  • ScriptTarget สำหรับการเรียกใช้สคริปต์ Node.js ที่โฮสต์ที่ Edge

กำหนดค่าเพียง 1 รายการใน TargetEndpoint

ชื่อ คำอธิบาย ค่าเริ่มต้น จำเป็นหรือไม่
TargetEndpoint
name ชื่อของ TargetEndpoint ซึ่งต้องไม่ซ้ำกันภายในพร็อกซี API การกำหนดค่า ชื่อของ TargetEndpoint จะใช้ใน RouteRule ของ ProxyEndpoint เพื่อ นำคำขอสำหรับการประมวลผลขาออก อักขระที่คุณได้รับอนุญาตให้ใช้ในชื่อ จำกัดไว้เฉพาะอักขระต่อไปนี้ A-Za-z0-9._\-$ % ไม่มี ใช่
PreFlow กำหนดนโยบายในโฟลว์ PreFlow ของคำขอหรือการตอบกลับ ไม่มี ใช่
Flows
กำหนดนโยบายในโฟลว์แบบมีเงื่อนไขของคำขอหรือการตอบกลับ
ไม่มี ใช่
PostFlow
กำหนดนโยบายในโฟลว์ PostFlow ของคำขอหรือการตอบกลับ
ไม่มี ใช่
HTTPTargetConnection

ระบุการเข้าถึงทรัพยากรแบ็กเอนด์ผ่าน HTTP ด้วยองค์ประกอบย่อย

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

URL กำหนดที่อยู่เครือข่ายของบริการแบ็กเอนด์ที่ TargetEndpoint จะส่งต่อข้อความคำขอ ไปยัง ไม่มี ไม่
LoadBalancer

กำหนดการกำหนดค่า TargetServer ที่มีชื่ออย่างน้อย 1 รายการ การกำหนดค่า TargetServer ที่มีชื่อ สามารถใช้เพื่อกำหนดการเชื่อมต่อการกำหนดค่าปลายทาง 2 รายการขึ้นไป สำหรับการปรับสมดุลโหลด

นอกจากนี้ คุณยังใช้ TargetServers เพื่อแยกการกำหนดค่าพร็อกซี API ออกจาก URL ปลายทางของบริการแบ็กเอนด์ที่เฉพาะเจาะจงได้ด้วย

ดูการจัดสรรภาระงาน ในเซิร์ฟเวอร์แบ็กเอนด์

ไม่มี ไม่
Properties คุณกำหนดชุดการตั้งค่า HTTP ที่ไม่บังคับเป็นพร็อพเพอร์ตี้ของ <TargetEndpoint> ได้ ไม่มี ไม่
SSLInfo คุณเลือกกำหนดการตั้งค่า TLS/SSL ใน TargetEndpoint เพื่อควบคุมการเชื่อมต่อ TLS/SSL ระหว่างพร็อกซี API กับบริการเป้าหมายได้ ดูการกำหนดค่า TargetEndpoint ของ TLS/SSL ไม่มี ไม่
LocalTargetConnection ระบุทรัพยากรที่จะเข้าถึงในเครื่องโดยข้ามลักษณะเครือข่าย เช่น การปรับสมดุลโหลดและตัวประมวลผลข้อความ

หากต้องการระบุทรัพยากรเป้าหมาย ให้ใส่องค์ประกอบย่อย APIProxy (ที่มีองค์ประกอบ ProxyEndpoint) หรือองค์ประกอบย่อย Path

ดูข้อมูลเพิ่มเติมได้ที่การเชื่อมต่อพร็อกซี API เข้าด้วยกัน

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

APIProxy ระบุชื่อของพร็อกซี API ที่จะใช้เป็นเป้าหมายสำหรับคำขอ พร็อกซีเป้าหมาย ต้องอยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับพร็อกซีที่ส่งคำขอ ซึ่งเป็น ทางเลือกแทนการใช้องค์ประกอบเส้นทาง ไม่มี ไม่
ProxyEndpoint ใช้กับ APIProxy เพื่อระบุชื่อของ ProxyEndpoint ของพร็อกซีเป้าหมาย ไม่มี ไม่
Path ระบุเส้นทางปลายทางของพร็อกซี API ที่จะใช้เป็นเป้าหมายสำหรับคำขอ พร็อกซีเป้าหมาย ต้องอยู่ในองค์กรและสภาพแวดล้อมเดียวกันกับพร็อกซีที่ส่งคำขอ ซึ่งเป็นทางเลือกแทนการใช้ APIProxy ไม่มี ไม่
FaultRules
กำหนดวิธีที่ TargetEndpoint ตอบสนองต่อข้อผิดพลาด กฎข้อผิดพลาดระบุรายการ 2 รายการต่อไปนี้
  • เงื่อนไขที่ระบุข้อบกพร่องที่จะจัดการตามหมวดหมู่ หมวดหมู่ย่อย หรือชื่อข้อบกพร่องที่กำหนดไว้ล่วงหน้า
  • นโยบายอย่างน้อย 1 รายการที่กำหนดลักษณะการทำงานของกฎข้อบกพร่องสำหรับ เงื่อนไขที่เกี่ยวข้อง

ดูการจัดการข้อบกพร่อง

ไม่มี ไม่
DefaultFaultRule

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

ดูการจัดการข้อบกพร่อง

ไม่มี ไม่
ScriptTarget
ResourceURL

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

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

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

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

ไม่มี ใช่
EnvironmentVariable

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

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

ไม่มี ไม่
Arguments

ส่งอาร์กิวเมนต์ไปยังสคริปต์ Node.js หลัก (ไม่บังคับ)

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

ไม่มี ไม่

การกำหนดค่า TargetEndpoint ของ TLS/SSL

โดยทั่วไปแล้ว TargetEndpoint จะต้องจัดการการเชื่อมต่อ HTTPS กับโครงสร้างพื้นฐานของแบ็กเอนด์ที่แตกต่างกัน ด้วยเหตุนี้ เราจึงรองรับการตั้งค่าการกำหนดค่า TLS/SSL หลายรายการ

TLS/SSL องค์ประกอบการกำหนดค่า TargetEndpoint

ชื่อ คำอธิบาย ค่าเริ่มต้น จำเป็นหรือไม่
SSLInfo
Enabled ระบุว่าเปิดใช้ TLS/SSL สำหรับปลายทางหรือไม่ ค่าเริ่มต้นคือ true หาก <URL> ระบุโปรโตคอล HTTPS และ false หาก <URL> ระบุ HTTP จริง หาก <URL> ระบุ HTTPS ไม่
TrustStore ที่เก็บคีย์ที่มีใบรับรองเซิร์ฟเวอร์ที่เชื่อถือได้ ไม่มี ไม่
ClientAuthEnabled การตั้งค่าที่เปิดการตรวจสอบสิทธิ์ไคลเอ็นต์ขาออก (TLS/SSL แบบ 2 ทาง) เท็จ ไม่
KeyStore ที่เก็บคีย์ที่มีคีย์ส่วนตัวที่ใช้สำหรับการตรวจสอบสิทธิ์ไคลเอ็นต์ขาออก ไม่มี มี (หาก ClientAuthEnabled เป็นจริง)
KeyAlias ชื่อแทนคีย์ของคีย์ส่วนตัวที่ใช้สำหรับการตรวจสอบสิทธิ์ไคลเอ็นต์ขาออก ไม่มี มี (หาก ClientAuthEnabled เป็นจริง)
Ciphers

การเข้ารหัสที่รองรับสำหรับ TLS/SSL ขาออก หากไม่ได้ระบุการเข้ารหัส ระบบจะอนุญาตการเข้ารหัสทั้งหมด ที่ใช้ได้กับ JVM

หากต้องการจํากัดการใช้ Cipher ให้เพิ่มองค์ประกอบต่อไปนี้ซึ่งแสดงรายการ Cipher ที่รองรับ

<Ciphers>
 <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher>
 <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher>
</Ciphers>
ไม่มี ไม่
Protocols

โปรโตคอลที่รองรับสำหรับ TLS/SSL ขาออก หากไม่ได้ระบุโปรโตคอล ระบบจะอนุญาตโปรโตคอลทั้งหมดที่ใช้ได้กับ JVM

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

<Protocols>
 <Protocol>TLSv1.1</Protocol>
 <Protocol>TLSv1.2</Protocol>
</Protocols>
ไม่มี ไม่
CommonName

หากระบุไว้ ค่าที่จะใช้ตรวจสอบชื่อทั่วไปของใบรับรองเป้าหมาย ค่านี้ใช้ได้กับการกำหนดค่า TargetEndpoint และ TargetServer เท่านั้น แต่ใช้ไม่ได้กับการกำหนดค่า VirtualHost

โดยค่าเริ่มต้น ค่าที่ระบุจะตรงกับชื่อจริงของใบรับรองเป้าหมายทุกประการ ตัวอย่างเช่น การใช้ *.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 โดยทางโปรแกรมให้ตรวจหาสภาพแวดล้อมที่เรียกใช้ และตั้งค่าการอ้างอิงไปยังที่เก็บคีย์และที่เก็บที่เชื่อถือที่เหมาะสมแบบไดนามิก บทความในชุมชน Apigee ต่อไปนี้อธิบายสถานการณ์นี้โดยละเอียดและมีตัวอย่างพร็อกซี API ที่สามารถนำไปใช้ได้: Dynamic SSLInfo for TargetEndpoint using variable reference

ในตัวอย่างต่อไปนี้เกี่ยวกับวิธีตั้งค่าแท็ก <SSLInfo> ในการกำหนดค่า TargetEndpoint คุณระบุค่าได้ในขณะรันไทม์ เช่น โดย Java Callout, นโยบาย JavaScript หรือนโยบาย Assign Message ใช้ตัวแปรข้อความที่มีค่าที่คุณต้องการตั้งค่า

อนุญาตให้ใช้ตัวแปรในองค์ประกอบต่อไปนี้เท่านั้น

<SSLInfo>
    <Enabled>{myvars.ssl.enabled}</Enabled>
    <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled>
    <KeyStore>{myvars.ssl.keystore}</KeyStore>
    <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias>
    <TrustStore>{myvars.ssl.trustStore}</TrustStore>
</SSLInfo>

การใช้ การอ้างอิงเพื่อตั้งค่า TLS/SSL แบบไดนามิก

เมื่อกำหนดค่า TargetEndpoint ที่ใช้ HTTPS คุณต้องพิจารณากรณีที่ใบรับรอง TLS/SSL หมดอายุ หรือการเปลี่ยนแปลงการกำหนดค่าระบบกำหนดให้คุณต้องอัปเดตใบรับรอง ในการติดตั้ง Edge สำหรับ Private Cloud เมื่อกำหนดค่า TLS/SSL โดยใช้ค่าแบบคงที่หรือโดย ใช้ตัวแปรโฟลว์ คุณอาจต้องรีสตาร์ทตัวประมวลผลข้อความ

ดูข้อมูลเพิ่มเติมได้ที่อัปเดตใบรับรอง TLS

อย่างไรก็ตาม คุณสามารถกำหนดค่า TargetEndpoint ให้ใช้การอ้างอิงไปยัง ที่เก็บคีย์หรือที่เก็บที่เชื่อถือแทนได้ ข้อดีของการใช้การอ้างอิงคือคุณสามารถอัปเดตการอ้างอิงให้ชี้ไปยังที่เก็บคีย์หรือที่เก็บที่เชื่อถืออื่นเพื่ออัปเดตใบรับรอง TLS/SSL ได้โดยไม่ต้องรีสตาร์ทตัวประมวลผลข้อความ

ตัวอย่างเช่น ด้านล่างนี้คือ TargetEndpoint ที่ใช้การอ้างอิงไปยังที่เก็บคีย์

<SSLInfo>
    <Enabled>true</Enabled>
    <ClientAuthEnabled>false</ClientAuthEnabled>
    <KeyStore>ref://keystoreref</KeyStore>
    <KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>

ใช้การเรียก API แบบ POST ต่อไปนี้เพื่อสร้างการอ้างอิงชื่อ keystoreref

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

การอ้างอิงจะระบุชื่อของที่เก็บคีย์และประเภทของที่เก็บคีย์

ใช้การเรียก API แบบ GET ต่อไปนี้เพื่อดูข้อมูลอ้างอิง

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

หากต้องการเปลี่ยนการอ้างอิงในภายหลังให้ชี้ไปยังที่เก็บคีย์อื่น โดยตรวจสอบว่าชื่อแทนมีชื่อเดียวกัน ให้ใช้การเรียก PUT ต่อไปนี้

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

TargetEndpoint ที่มีการจัดสรรภาระงานเป้าหมาย

TargetEndpoints รองรับการจัดสรรภาระงานใน TargetServer ที่มีชื่อหลายรายการโดยใช้อัลกอริทึมการจัดสรรภาระงาน 3 รายการ

ดูวิธีการโดยละเอียดได้ที่การปรับสมดุลโหลดในเซิร์ฟเวอร์แบ็กเอนด์

นโยบาย

ไดเรกทอรี /policies ในพร็อกซี API มีนโยบายทั้งหมดที่พร้อม แนบกับโฟลว์ในพร็อกซี API

องค์ประกอบการกำหนดค่านโยบาย

ชื่อ คำอธิบาย ค่าเริ่มต้น จำเป็นหรือไม่
Policy
name

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

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

ไม่มี ใช่
enabled

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

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

จริง ไม่
continueOnError

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

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

เท็จ ไม่
async

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

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

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

เท็จ ไม่

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

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

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

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

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

<Step><Name>MyPolicy</Name></Step>

ระบบจะบังคับใช้นโยบายตามลำดับที่แนบกับโฟลว์ เช่น

<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>

การกำหนดค่าการแนบนโยบาย องค์ประกอบ

ชื่อ คำอธิบาย ค่าเริ่มต้น จำเป็นหรือไม่
Step
Name ชื่อของนโยบายที่จะดำเนินการตามคำจำกัดความของขั้นตอนนี้ ไม่มี ใช่
Condition คำสั่งแบบมีเงื่อนไขที่กำหนดว่าควรบังคับใช้นโยบายหรือไม่ หากนโยบายมีเงื่อนไขที่เชื่อมโยงอยู่ นโยบายจะทำงานก็ต่อเมื่อคำสั่งแบบมีเงื่อนไขประเมินเป็นจริงเท่านั้น ไม่มี ไม่

โฟลว์

ProxyEndpoint และ TargetEndpoint จะกำหนดไปป์ไลน์สำหรับการประมวลผลข้อความคำขอและการตอบกลับ ไปป์ไลน์การประมวลผลประกอบด้วยโฟลว์คำขอและโฟลว์การตอบกลับ แต่ละคำขอ โฟลว์และโฟลว์การตอบกลับจะแบ่งย่อยออกเป็น PreFlow, โฟลว์ "แบบมีเงื่อนไข" หรือ "แบบมีชื่อ" ที่ไม่บังคับอย่างน้อย 1 รายการ และ PostFlow

  • PreFlow: ทำงานเสมอ ดำเนินการก่อนโฟลว์แบบมีเงื่อนไข
  • PostFlow: ทำงานเสมอ ดำเนินการหลังจากโฟลว์แบบมีเงื่อนไข

นอกจากนี้ คุณยังเพิ่ม PostClientFlow ไปยัง ProxyEndpoint ได้ ซึ่งจะทำงานหลังจากที่ระบบส่งการตอบกลับไปยังแอปไคลเอ็นต์ที่ขอมา เฉพาะนโยบายการบันทึกข้อความและส่วนขยายการบันทึกของ Google Stackdriver เท่านั้นที่แนบไปกับโฟลว์นี้ได้ PostClientFlow ช่วยลดเวลาในการตอบสนองของพร็อกซี API และทำให้ข้อมูลพร้อมใช้งานสำหรับการ บันทึกที่ไม่ได้คำนวณจนกว่าจะมีการส่งคืนการตอบกลับไปยังไคลเอ็นต์ เช่น client.sent.start.timestamp และ client.sent.end.timestamp โดยโฟลว์นี้ใช้ เพื่อวัดช่วงเวลาระหว่างการประทับเวลาเริ่มต้นและสิ้นสุดสำหรับข้อความตอบกลับเป็นหลัก

ดูวิดีโอวิธีการสั้นๆ

วิดีโอ: ดูวิดีโอสั้นๆ นี้เกี่ยวกับการใช้การบันทึกข้อความใน PostClientFlow

ต่อไปนี้คือตัวอย่าง PostClientFlow ที่มีนโยบายการบันทึกข้อความแนบอยู่

    ...
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
    <PostClientFlow>
        <Request/>
        <Response>
            <Step>
                <Name>Message-Logging-1</Name>
            </Step>
        </Response>
    </PostClientFlow>
    ...

ไปป์ไลน์การประมวลผลพร็อกซี API จะเรียกใช้โฟลว์ตามลำดับต่อไปนี้

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

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

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

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

เฉพาะโฟลว์ที่มีไฟล์แนบนโยบายเท่านั้นที่ต้องกำหนดค่าในการกำหนดค่า ProxyEndpoint หรือ TargetEndpoint คุณต้องระบุ PreFlow และ PostFlow ในการกำหนดค่า ProxyEndpoint หรือ TargetEndpoint เท่านั้นเมื่อต้องบังคับใช้นโยบายระหว่างการประมวลผล PreFlow หรือ PostFlow

การจัดลำดับองค์ประกอบ PreFlow และ PostFlow ไม่สำคัญ ซึ่งต่างจากโฟลว์แบบมีเงื่อนไข เนื่องจากพร็อกซี API จะเรียกใช้แต่ละองค์ประกอบในจุดที่เหมาะสมในไปป์ไลน์เสมอ ไม่ว่าองค์ประกอบเหล่านั้นจะปรากฏที่ใดในการกำหนดค่าปลายทาง

โฟลว์แบบมีเงื่อนไข

ProxyEndpoint และ TargetEndpoint รองรับโฟลว์แบบมีเงื่อนไขได้ไม่จำกัดจำนวน (หรือที่เรียกว่า "โฟลว์ที่มีชื่อ")

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

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

  • URI คำขอ
  • คำกริยา HTTP (GET/PUT/POST/DELETE)
  • ค่าของพารามิเตอร์การค้นหา ส่วนหัว และพารามิเตอร์แบบฟอร์ม
  • โรคอื่นๆ อีกหลายประเภท

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

<Flows>
  <Flow name="TokenEndpoint">
    <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
    <Request>
      <Step>
        <Name>GenerateAccessToken</Name>
      </Step>
    </Request>
  </Flow>
</Flows>

องค์ประกอบการกำหนดค่าโฟลว์

ชื่อ คำอธิบาย ค่าเริ่มต้น จำเป็นหรือไม่
Flow ไปป์ไลน์การประมวลผลคำขอหรือการตอบกลับที่กำหนดโดย ProxyEndpoint หรือ TargetEndpoint
Name ชื่อที่ไม่ซ้ำกันของโฟลว์ ไม่มี ใช่
Condition คำสั่งแบบมีเงื่อนไขที่ประเมินตัวแปรอย่างน้อย 1 รายการเพื่อให้ประเมินค่าเป็นจริงหรือ เท็จ โฟลว์ทั้งหมดนอกเหนือจากประเภท PreFlow และ PostFlow ที่กำหนดไว้ล่วงหน้าต้องกำหนด เงื่อนไขสำหรับการดำเนินการ ไม่มี ใช่
Request ไปป์ไลน์ที่เชื่อมโยงกับการประมวลผลข้อความคำขอ ไม่มี ไม่
Response ไปป์ไลน์ที่เชื่อมโยงกับการประมวลผลข้อความตอบกลับ ไม่มี ไม่

การประมวลผลขั้นตอน

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

ตัวอย่างเช่น ในการกำหนดค่าโฟลว์ต่อไปนี้ คำขอขาเข้าใดๆ ที่ไม่มี คำต่อท้ายเส้นทาง /first หรือ /second จะทำให้ ThirdFlow ทำงาน ซึ่งบังคับใช้นโยบายที่ชื่อ Return404

<Flows>
  <Flow name="FirstFlow">
    <Condition>proxy.pathsuffix MatchesPath "/first"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="SecondFlow">
    <Condition>proxy.pathsuffix MatchesPath "/second"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
      <Step><Name>SecondPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="ThirdFlow">
    <Request>
      <Step><Name>Return404</Name></Step>
    </Request>
  </Flow>
</Flows>

แหล่งข้อมูล

"ทรัพยากร" (ไฟล์ทรัพยากรสำหรับใช้ในพร็อกซี API) คือสคริปต์ โค้ด และการแปลง XSL ที่แนบไปกับโฟลว์ได้โดยใช้นโยบาย โดยจะปรากฏในส่วน "สคริปต์" ของเครื่องมือแก้ไขพร็อกซี API ใน UI การจัดการ

ดูไฟล์ทรัพยากรสำหรับประเภททรัพยากรที่รองรับ

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

นโยบายในสภาพแวดล้อมใดก็ได้สามารถอ้างอิงทรัพยากรที่จัดเก็บไว้ที่ระดับองค์กรได้ นโยบายในสภาพแวดล้อมนั้นสามารถอ้างอิงทรัพยากรที่จัดเก็บไว้ที่ระดับสภาพแวดล้อมได้ ทรัพยากรที่จัดเก็บไว้ที่ระดับพร็อกซี API จะอ้างอิงได้เฉพาะนโยบายในพร็อกซี API นั้น