คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
Edge มียูทิลิตีที่มีประสิทธิภาพชื่อ "management API" ซึ่งให้บริการต่างๆ เช่น
- การทำให้พร็อกซี API ใช้งานได้หรือยกเลิกการทำให้ใช้งานได้
- การกำหนดค่าโฮสต์เสมือน คีย์สโตร์ และ Truststores ฯลฯ
- การสร้าง การลบ และ/หรืออัปเดตเอนทิตี เช่น KeyValueMaps, ผลิตภัณฑ์ API, แอปของนักพัฒนา นักพัฒนาซอฟต์แวร์, คีย์ของผู้บริโภค ฯลฯ
- การดึงข้อมูลเกี่ยวกับเอนทิตีเหล่านี้
บริการเหล่านี้จะสามารถเข้าถึงได้ผ่านคอมโพเนนต์ที่เรียกว่า Management Server ในแพลตฟอร์ม Apigee Edge คุณจะเรียกใช้บริการเหล่านี้ได้ง่ายๆ ด้วยการเรียก API การจัดการที่ไม่ซับซ้อน
บางครั้งเราอาจต้องใช้บริการเหล่านี้จากพร็อกซี API ขณะรันไทม์ นั่นเป็นเพราะเอนทิตีอย่างเช่น KeyValueMaps, โทเค็นเพื่อการเข้าถึง OAuth, ผลิตภัณฑ์ API, แอปของนักพัฒนาซอฟต์แวร์, นักพัฒนาซอฟต์แวร์, คีย์ของผู้บริโภค ฯลฯ มีข้อมูลที่เป็นประโยชน์ในรูปแบบคู่คีย์-ค่า แอตทริบิวต์ที่กำหนดเอง หรือเป็นส่วนหนึ่งของโปรไฟล์
ตัวอย่างเช่น คุณสามารถเก็บข้อมูลต่อไปนี้ใน KeyValueMap เพื่อทำให้มีความปลอดภัยและเข้าถึงได้มากขึ้นระหว่างรันไทม์
- URL เป้าหมายแบ็กเอนด์
- คุณสมบัติของสภาพแวดล้อม
- ข้อมูลเข้าสู่ระบบการรักษาความปลอดภัยของระบบแบ็กเอนด์หรือระบบของบุคคลที่สาม
ในทำนองเดียวกัน คุณอาจต้องการรับรายการผลิตภัณฑ์ API หรืออีเมลของนักพัฒนาซอฟต์แวร์ขณะรันไทม์ ข้อมูลนี้จะแสดงอยู่ในโปรไฟล์แอปของนักพัฒนาซอฟต์แวร์
ข้อมูลทั้งหมดนี้จะนำมาใช้อย่างมีประสิทธิภาพในระหว่างรันไทม์เพื่อเปิดใช้ลักษณะการทำงานแบบไดนามิกในนโยบายหรือโค้ดที่กำหนดเองภายใน Apigee Edge
ลายป้องกัน
API การจัดการเป็นตัวเลือกที่แนะนำและมีประโยชน์สำหรับงานดูแลระบบ และไม่ควรใช้กับตรรกะรันไทม์ใดๆ ในโฟลว์พร็อกซี API เนื่องด้วยเหตุผลต่อไปนี้
- การใช้ API การจัดการเพื่อเข้าถึงข้อมูลเกี่ยวกับเอนทิตี เช่น KeyValueMaps, โทเค็นเพื่อการเข้าถึง OAuth หรือเพื่อวัตถุประสงค์อื่นๆ จากพร็อกซี API จะนำไปสู่การพึ่งพิงเซิร์ฟเวอร์การจัดการ
- เซิร์ฟเวอร์การจัดการไม่ได้เป็นส่วนหนึ่งของคอมโพเนนต์รันไทม์ Edge ดังนั้นจึงอาจมีความพร้อมใช้งานต่ำ
- นอกจากนี้ เซิร์ฟเวอร์การจัดการอาจไม่ได้รับการจัดสรรภายในเครือข่ายหรือศูนย์ข้อมูลเดียวกัน จึงอาจมีเวลาในการตอบสนองของเครือข่ายในรันไทม์
- รายการในเซิร์ฟเวอร์การจัดการจะมีการแคชนานกว่า ดังนั้น เราอาจไม่สามารถดูข้อมูลล่าสุดได้ทันทีในพร็อกซี API หากเราดำเนินการเขียนและอ่านข้อมูลในช่วงเวลาสั้นๆ
- เพิ่มการข้ามเครือข่ายระหว่างรันไทม์
ในตัวอย่างโค้ดด้านล่าง การเรียก API การจัดการจะสร้างผ่านโค้ด JavaScript ที่กำหนดเองเพื่อดึงข้อมูลจาก KeyValueMap ดังนี้
var response = httpClient.send('https://api.enterprise.apigee.com/v1/o/org_name/e/env_name/keyvaluemaps/kvm_name')
หากเซิร์ฟเวอร์การจัดการไม่พร้อมใช้งาน โค้ด JavaScript ที่เรียกใช้ Management API จะล้มเหลว ซึ่งทำให้คำขอ API ล้มเหลวในภายหลัง
มีอิทธิพล
- เริ่มใช้ทรัพยากร Dependency เพิ่มเติมในเซิร์ฟเวอร์การจัดการระหว่างรันไทม์ การทำงานล้มเหลวในเซิร์ฟเวอร์การจัดการจะส่งผลต่อการเรียก API
- ข้อมูลเข้าสู่ระบบของผู้ใช้สำหรับ API การจัดการต้องจัดเก็บภายในเครื่องหรือในที่เก็บที่ปลอดภัยบางแห่ง เช่น KVM ที่เข้ารหัส
- ผลกระทบต่อประสิทธิภาพเนื่องจากมีการเรียกใช้บริการการจัดการผ่านเครือข่าย
- คุณอาจไม่เห็นค่าที่อัปเดตทันทีเนื่องจากแคชหมดอายุในเซิร์ฟเวอร์การจัดการนานกว่า
แนวทางปฏิบัติแนะนำ
การดึงข้อมูลจากเอนทิตีอย่างเช่น KeyValueMaps, API ผลิตภัณฑ์, DeveloperApps, นักพัฒนาซอฟต์แวร์, คีย์ของผู้บริโภค ฯลฯ ขณะรันไทม์นั้นมีประสิทธิภาพมากกว่า ลองดูตัวอย่างต่อไปนี้
- ใช้นโยบาย KeyValueMapEnforcements เพื่อเข้าถึงข้อมูลจาก 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 มีนโยบาย ConfirmAPIKey คุณจะเข้าถึงข้อมูลได้โดยใช้ตัวแปรโฟลว์ที่มีการป้อนข้อมูลให้เป็นส่วนหนึ่งของนโยบายนี้ ต่อไปนี้คือตัวอย่างโค้ดที่แสดงวิธีเรียกข้อมูลชื่อและข้อมูล generate_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 ไม่มีนโยบาย ConfirmAPIKey คุณจะเข้าถึงโปรไฟล์ของผลิตภัณฑ์ API, แอปของนักพัฒนาซอฟต์แวร์ ฯลฯ ได้โดยใช้นโยบายเอนทิตีการเข้าถึงและดึงข้อมูลตัวแปร
- เรียกดูโปรไฟล์ของ 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 โดยใช้นโยบาย ExtractVariable ดังนี้<!-- /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 มีนโยบาย ConfirmAPIKey คุณจะเข้าถึงข้อมูลได้โดยใช้ตัวแปรโฟลว์ที่มีการป้อนข้อมูลให้เป็นส่วนหนึ่งของนโยบายนี้ ต่อไปนี้คือตัวอย่างโค้ดที่แสดงวิธีเรียกข้อมูลชื่อและข้อมูล generate_by ของแอปนักพัฒนาซอฟต์แวร์โดยใช้ JavaScript