คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่
เอกสารประกอบของ Apigee X info
Edge มีเครื่องมือที่มีประสิทธิภาพที่เรียกว่า "Management API" ซึ่งมีบริการต่างๆ เช่น
- การติดตั้งใช้งานหรือยกเลิกการติดตั้งใช้งานพร็อกซี API
- การกำหนดค่าโฮสต์เสมือน คีย์สโตร์และทรัสต์สโตร์ เป็นต้น
- การสร้าง ลบ และ/หรืออัปเดตเอนทิตี เช่น KeyValueMaps, ผลิตภัณฑ์ API, แอปของนักพัฒนาซอฟต์แวร์ , นักพัฒนาซอฟต์แวร์, คีย์ผู้ใช้บริการ เป็นต้น
- การดึงข้อมูลเกี่ยวกับเอนทิตีเหล่านี้
ระบบจะเข้าถึงบริการเหล่านี้ได้ผ่านคอมโพเนนต์ที่เรียกว่า Management Server ในแพลตฟอร์ม Apigee Edge คุณเรียกใช้บริการเหล่านี้ได้อย่างง่ายดายด้วยความช่วยเหลือจากการเรียก Management API แบบง่าย
บางครั้งเราอาจต้องใช้บริการเหล่านี้อย่างน้อย 1 รายการจากพร็อกซี API ในช่วงรันไทม์ เนื่องจากเอนทิตีต่างๆ เช่น KeyValueMaps, โทเค็นเพื่อการเข้าถึง OAuth, ผลิตภัณฑ์ API, แอปของนักพัฒนาซอฟต์แวร์, นักพัฒนาซอฟต์แวร์, คีย์ผู้ใช้บริการ เป็นต้น มีข้อมูลที่เป็นประโยชน์ในรูปแบบคู่คีย์-ค่า แอตทริบิวต์ที่กำหนดเอง หรือเป็นส่วนหนึ่งของโปรไฟล์
ตัวอย่างเช่น คุณสามารถจัดเก็บข้อมูลต่อไปนี้ใน KeyValueMap เพื่อให้ข้อมูลมีความปลอดภัยมากขึ้นและเข้าถึงได้ในช่วงรันไทม์
- URL เป้าหมายของแบ็กเอนด์
- พร็อพเพอร์ตี้ของสภาพแวดล้อม
- ข้อมูลเข้าสู่ระบบที่ปลอดภัยของแบ็กเอนด์หรือระบบของบุคคลที่สาม
ในทำนองเดียวกัน คุณอาจต้องการรับรายการผลิตภัณฑ์ API หรืออีเมลของนักพัฒนาซอฟต์แวร์ในช่วงรันไทม์ ข้อมูลนี้จะพร้อมใช้งานเป็นส่วนหนึ่งของโปรไฟล์แอปของนักพัฒนาซอฟต์แวร์
คุณสามารถใช้ข้อมูลทั้งหมดนี้ได้อย่างมีประสิทธิภาพในช่วงรันไทม์เพื่อเปิดใช้ลักษณะการทำงานแบบไดนามิกในนโยบายหรือโค้ดที่กำหนดเองภายใน Apigee Edge
รูปแบบที่ไม่แนะนำ
เราขอแนะนำให้ใช้ Management API สำหรับงานดูแลระบบ และไม่ควรใช้เพื่อดำเนินการตรรกะรันไทม์ใดๆ ในโฟลว์ของพร็อกซี API เนื่องจากสาเหตุต่อไปนี้
- การใช้ Management API เพื่อเข้าถึงข้อมูลเกี่ยวกับเอนทิตีต่างๆ เช่น KeyValueMaps, โทเค็นเพื่อการเข้าถึง OAuth หรือเพื่อวัตถุประสงค์อื่นๆ จากพร็อกซี API จะทำให้เกิดการพึ่งพา Management Server
- Management Server ไม่ได้เป็นส่วนหนึ่งของคอมโพเนนต์รันไทม์ของ Edge จึงอาจไม่พร้อมใช้งานสูง
- นอกจากนี้ ระบบอาจไม่ได้จัดเตรียม Management Server ไว้ในเครือข่ายหรือศูนย์ข้อมูลเดียวกัน จึงอาจทำให้เกิดความหน่วงของเครือข่ายในช่วงรันไทม์
- รายการใน Management Server จะได้รับการแคชเป็นระยะเวลานานขึ้น ดังนั้นเราจึงอาจไม่ เห็นข้อมูลล่าสุดในพร็อกซี API ทันทีหากเราทำการเขียนและอ่านข้อมูลใน ระยะเวลาอันสั้น
- เพิ่มจำนวนฮ็อปของเครือข่ายในช่วงรันไทม์
ในโค้ดตัวอย่างด้านล่าง การเรียก Management API จะทำผ่านโค้ด JavaScript ที่กำหนดเองเพื่อดึงข้อมูลจาก KeyValueMap
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
หาก Management Server ไม่พร้อมใช้งาน โค้ด JavaScript ที่เรียกใช้การเรียก Management API จะล้มเหลว ซึ่งจะทำให้คำขอ API ล้มเหลวในภายหลัง
ผลกระทบ
- ทำให้เกิดการพึ่งพา Management Server เพิ่มเติมในช่วงรันไทม์ ความล้มเหลวใน Management Server จะส่งผลต่อการเรียก API
- ต้องจัดเก็บข้อมูลเข้าสู่ระบบของผู้ใช้สำหรับ Management API ไว้ในเครื่องหรือในที่เก็บข้อมูลที่ปลอดภัย เช่น KVM ที่เข้ารหัส
- ผลกระทบต่อประสิทธิภาพเนื่องจากการเรียกใช้บริการการจัดการผ่านเครือข่าย
- อาจไม่เห็นค่าที่อัปเดตทันทีเนื่องจากแคชหมดอายุใน Management Server นานขึ้น
แนวทางปฏิบัติแนะนำ
มีวิธีที่มีประสิทธิภาพมากกว่าในการดึงข้อมูลจากเอนทิตีต่างๆ เช่น KeyValueMaps, ผลิตภัณฑ์ API, แอปของนักพัฒนาซอฟต์แวร์, นักพัฒนาซอฟต์แวร์, คีย์ผู้ใช้บริการ เป็นต้น ในช่วงรันไทม์ ลองดูตัวอย่างต่อไปนี้
- ใช้นโยบาย KeyValueMapOperations เพื่อเข้าถึงข้อมูลจาก KeyValueMaps นี่คือโค้ดตัวอย่าง
ที่แสดงวิธีดึงข้อมูลจาก KeyValueMap
<!-- /antipatterns/examples/2-6.xml --> <KeyValueMapOperations mapIdentifier="urlMap" async="false" continueOnError="false" enabled="true" name="GetURLKVM"> <DisplayName>GetURLKVM</DisplayName> <ExpiryTimeInSecs>86400</ExpiryTimeInSecs> <Scope>environment</Scope> <Get assignTo="urlHosti" index="2"> <Key> <Parameter>urlHost_1</Parameter> </Key> </Get> </KeyValueMapOperations>
- หากต้องการเข้าถึงข้อมูลเกี่ยวกับผลิตภัณฑ์ API, แอปของนักพัฒนาซอฟต์แวร์, นักพัฒนาซอฟต์แวร์, คีย์ผู้ใช้บริการ ฯลฯ
ในพร็อกซี API คุณสามารถทำอย่างใดอย่างหนึ่งต่อไปนี้:
- หากโฟลว์ของพร็อกซี API มีนโยบาย VerifyAPIKey คุณจะเข้าถึงข้อมูลได้
โดยใช้ตัวแปรโฟลว์ที่ป้อนข้อมูลเป็นส่วนหนึ่งของนโยบายนี้ นี่คือโค้ดตัวอย่างที่แสดง
วิธีดึงข้อมูลชื่อและ created_by ของแอปของนักพัฒนาซอฟต์แวร์โดยใช้ JavaScript:
<!-- /antipatterns/examples/2-7.xml --> print("Application Name ", context.getVariable(""verifyapikey. VerifyAPIKey.app.name")); print("Created by:", context.getVariable("verifyapikey. VerifyAPIKey.app.created_by"));
- หากโฟลว์ของพร็อกซี API ไม่มีนโยบาย VerifyAPIKey คุณจะเข้าถึงโปรไฟล์ของผลิตภัณฑ์ API, แอปของนักพัฒนาซอฟต์แวร์ ฯลฯ ได้โดยใช้นโยบาย Access Entity และ Extract Variables ดังนี้
- ดึงข้อมูลโปรไฟล์ของ DeveloperApp ด้วยนโยบาย AccessEntity
<!-- /antipatterns/examples/2-8.xml --> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetDeveloperApp"> <DisplayName>GetDeveloperApp</DisplayName> <EntityType value="app"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
- แยก
appIdจาก DeveloperApp ด้วยนโยบาย ExtractVariables:<!-- /antipatterns/examples/2-9.xml --> <ExtractVariables name="Extract-Developer App-Info"> <!-- The source element points to the variable populated by AccessEntity policy. The format is <policy-type>.<policy-name> In this case, the variable contains the whole developer profile. --> <Source>AccessEntity.GetDeveloperApp"</Source> <VariablePrefix>developerapp</VariablePrefix> <XMLPayload> <Variable name="appld" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/App/AppId</XPath> </Variable> </XMLPayload> </ExtractVariables>
- ดึงข้อมูลโปรไฟล์ของ DeveloperApp ด้วยนโยบาย AccessEntity
- หากโฟลว์ของพร็อกซี API มีนโยบาย VerifyAPIKey คุณจะเข้าถึงข้อมูลได้
โดยใช้ตัวแปรโฟลว์ที่ป้อนข้อมูลเป็นส่วนหนึ่งของนโยบายนี้ นี่คือโค้ดตัวอย่างที่แสดง
วิธีดึงข้อมูลชื่อและ created_by ของแอปของนักพัฒนาซอฟต์แวร์โดยใช้ JavaScript: