מוצג המסמך של Apigee Edge.
עוברים אל
מסמכי תיעוד של Apigee X. מידע
מה
אחזור פרופילים של ישויות שצוינו ממאגר הנתונים של Apigee Edge. המדיניות מציבה
פרופיל במשתנה ששמו נקבע בפורמט AccessEntity.{policy_name}
. שלך
יכול להשתמש ב-AccessEntity
כדי לגשת לפרופילים של הישויות הבאות:
- אפליקציה
- מוצר API
- חברה
- מפתח של החברה
- מפתח יצרן
- מפתח
המדיניות AccessEntity
פועלת כחיפוש של מסד נתונים בסביבת זמן ריצה שמבוססת על מדיניות. שלך
יכול להשתמש בפרטי הפרופיל המוחזרים על ידי המדיניות הזו כדי לאפשר התנהגות דינמית, כמו
ניתוב מותנה של נקודות קצה, הפעלת זרימה, אכיפת מדיניות.
אתה משתמש במדיניות AccessEntity
כדי לקבל נתוני פרופיל ישות בתור
XML ולהזין אותו במשתנה. אתה מזהה את היישות שיש לקבל על ידי ציון ישות
ומזהה אחד או יותר המציינים את סוג הישות הרצויה. מאוחר יותר, בעוד
מדיניות אחרת, ניתן לאחזר את נתוני פרופיל הישות באמצעות מדיניות אחרת, כמו
מדיניות exportVariables או AssignMessage
דוגמאות
הדוגמאות הבאות מראות את השימוש ב-AccessEntity
בשילוב עם
כללי המדיניות ExtractVariables
ו-AssignMessage
לחילוץ כללי המדיניות של המפתח
ולהוסיף אותו לכותרת ה-HTTP.
קבלת כתובת אימייל של מפתח לשימוש במדיניות אחרת
מגדירים את המדיניות AccessEntity
כדי לציין מאיזה פרופיל ישות לקבל
Edge, וגם איפה למקם את נתוני הפרופיל.
בדוגמה הבאה, המדיניות מקבלת פרופיל ישות developer
באמצעות
מפתח ה-API מועבר כפרמטר של שאילתה כדי לזהות את המפתח. הפרופיל נמצא ב
משתנה ששמו נראה כך: AccessEntity.{policy_name}
. עכשיו המשתנה
שהוגדרה במדיניות הזו היא AccessEntity.GetDeveloperProfile
.
<AccessEntity name="GetDeveloperProfile"> <!-- This is the type entity whose profile we need to pull from the Edge datastore. --> <EntityType value="developer"/> <!-- We tell the policy to use the API key (presented as query parameter) to identify the developer. --> <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/> </AccessEntity>
שימוש במדיניות אחרת כדי לאחזר את הערך של פרופיל הישות מהמשתנה שהוגדר על ידי
AccessEntity
.
בדוגמה הבאה, מדיניות ExtractVariables
מאחזרת ערך מ-
את המשתנה AccessEntity.GetDeveloperProfile
שהוגדר קודם לכן על ידי
AccessEntity
.
חשוב לשים לב שהערך שמאוחזר מצוין כביטוי XPath
רכיב XMLPayload
. הערך שחולץ ממוקם בתוך
משתנה developer.email
.
<ExtractVariables name="SetDeveloperProfile"> <!-- 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.GetDeveloperProfile</Source> <VariablePrefix>developer</VariablePrefix> <XMLPayload> <Variable name="email" type="string"> <!-- You parse elements from the developer profile using XPath. --> <XPath>/Developer/Email</XPath> </Variable> </XMLPayload> </ExtractVariables>
במדיניות assignMessage הבאה, מאחזרת את כתובת האימייל למפתחים שהוגדרה על ידי המדיניות של exportVariables
<!-- We'll use this policy to return the variables set in the developer profile, just so that we can easily see them in the response. --> <AssignMessage name="EchoVariables"> <AssignTo createNew="false" type="response"></AssignTo> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <Set> <Headers> <Header name="X-Developer-email">{developer.email}</Header> </Headers> </Set> </AssignMessage>
הפניה לרכיב
המבנה הבסיסי של מדיניות AccessEntity
הוא:
<AccessEntity name="policy_name"> <EntityType value="entity_type"/> <EntityIdentifier ref="entity_identifier" type="identifier_type"/> <SecondaryIdentifier ref="secondary_identifier" type="identifier_type"/> </AccessEntity>
אפשר לגשת לכמה ישויות מאותו סוג על ידי קיבוץ
רכיב Identifiers
:
<AccessEntity name="name_of_the_policy"> <EntityType value="type_of_entity"/> <Identifiers> <Identifier> <EntityIdentifier ref="reference_to_entity_identifier" type*="identifier_type"/> <SecondaryIdentifier ref="reference_to_secondary_entity_identifier" type="identifier_type"/><!-- optional --> </Identifier > <Identifier> <EntityIdentifier ref="reference_to_entity_identifier" type*="identifier_type"/> <SecondaryIdentifier ref="reference_to_secondary_entity_identifier" type="identifier_type"/><!-- optional --> </Identifier > </Identifiers> </AccessEntity>
<AccessEntity> מאפיינים
<AccessEntity async="false" continueOnError="false" enabled="true" name="policy_name">
בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
<EntityIdentifier> רכיב
מציין את הישות המסוימת – מהסוג שניתן ב-EntityType – לקבל.
<EntityIdentifier ref="value_variable" type="identifier_type"/>
ברירת מחדל |
לא רלוונטי |
נוכחות |
חובה |
סוג |
מחרוזת |
מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות | סוג |
---|---|---|---|---|
אזכור |
המשתנה שמספק את המקור של המזהה, למשל
|
לא רלוונטי | חובה. | מחרוזת |
סוג | הסוג שמאוכלס על ידי המשתנה במאפיין ref. כמו
consumerkey מידע נוסף זמין בקטע סוגים ומזהים של ישויות
רשימה של ערכים. |
חובה. | מחרוזת |
דוגמה
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetCompany"> <DisplayName>GetCompanyProfile</DisplayName> <EntityType value="company"></EntityType> <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/> </AccessEntity>
<EntityType> רכיב
מציין את סוג הישות שיש לאחזר ממאגר הנתונים.
<EntityType value="entity_type"/>
ברירת מחדל |
לא רלוונטי |
נוכחות |
חובה |
סוג |
מחרוזת |
צריך להשתמש ברכיב EntityIdentifier
כדי לציין
כל ישות מהסוג הנתון שרוצים. למידע נוסף על סוגי ישויות, ראו סוגים ומזהים של ישויות.
מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות | סוג |
---|---|---|---|---|
ערך | אחד מסוגי הישויות הנתמכים. מידע נוסף זמין בקטע סוגי ישויות המזהים של רשימה. | ללא. | חובה. | מחרוזת |
<SecondaryIdentifier> רכיב
בשילוב עם EntityIdentifier
, מציין ערך כדי לזהות את הערך הרצוי
במופע של EntityType
הנתון.
<SecondaryIdentifier ref="value_variable" type="identifier_type"/>
ברירת מחדל |
לא רלוונטי |
נוכחות |
אופציונלי |
סוג |
מחרוזת |
צריך להשתמש ב-SecondaryIdentifier
כשמציינים רק EntityIdentifier
לא מבטיחה שתקבלו ישות אחת. לעיון בקטע צמצום
תוצאות עם מזהים משניים.
אין תמיכה בשימוש במספר רכיבי SecondaryIdentifier
.
מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות | סוג |
---|---|---|---|---|
אזכור |
המשתנה שמספק את המקור של המזהה, למשל
|
לא רלוונטי | חובה. | מחרוזת |
סוג | הסוג שמאוכלס על ידי המשתנה במאפיין ref. כמו
consumerkey מידע נוסף זמין בקטע סוגים ומזהים של ישויות
רשימה של ערכים. |
חובה. | מחרוזת |
דוגמה
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetAPIProduct"> <DisplayName>GetAPIProduct</DisplayName> <EntityType value="apiproduct"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
הערות שימוש
צמצום התוצאות באמצעות מזהים משניים
עבור ישויות מסוימות, ייתכן שציון מזהה אחד לא יהיה ספציפי מספיק כדי לקבל את הישות רוצה. במקרים כאלה, תוכלו להשתמש במזהה משני כדי לצמצם את התוצאות.
הגדרת המדיניות הראשונה, שעשויה להיות רחבה, עשויה להיראות כך:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetApp"> <DisplayName>GetAppProfile</DisplayName> <EntityType value="apiproduct"></EntityType> <EntityIdentifier ref="request.queryparam.apikey" type="consumerkey"/> </AccessEntity>
מאחר שניתן לשייך אפליקציה לכמה מוצרי API, לא בטוח שניתן להשתמש במזהה האפליקציה בלבד להחזיר את מוצר ה-API הרצוי (תוכלו לקבל רק את המוצר הראשון מתוך מספר מוצרים תואמים).
במקום זאת, כדי לקבל תוצאה מדויקת יותר, אפשר להשתמש בפונקציה SecondaryIdentifier
. עבור
לדוגמה, ייתכן שיש בזרימה משתנים מסוג appname
ו-developerid
כי הם מאוכלסים כברירת מחדל במהלך חילופי OAuth 2.0. אפשר להשתמש בערכים של
המשתנים האלה במדיניות AccessEntity
כדי לקבל פרטי פרופיל לגבי הבקשה
אפליקציה.
הגדרת המדיניות הספציפית יותר עשויה להיראות כך:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <AccessEntity async="false" continueOnError="false" enabled="true" name="GetApp"> <DisplayName>GetAppProfile</DisplayName> <EntityType value="apiproduct"></EntityType> <EntityIdentifier ref="developer.app.name" type="appname"/> <SecondaryIdentifier ref="developer.id" type="developerid"/> </AccessEntity>
המזהים והסוגים הנתמכים של ישויות
ב-AccessEntity
יש תמיכה במזהים ובסוגים הבאים של ישויות.
ערך EntityType | סוגי EntityIdentifier | סוגי מזהים משניים |
---|---|---|
apiproduct |
appid |
apiresource |
apiproductname |
||
appname |
apiresource developeremail developerid companyname |
|
consumerkey |
apiresource |
|
app |
appid |
|
appname |
developeremail developerid companyname |
|
consumerkey |
||
authorizationcode |
authorizationcode |
|
company |
appid |
|
company |
||
consumerkey |
||
companydeveloper |
companyname |
|
consumerkey |
consumerkey |
|
consumerkey_scope |
consumerkey |
|
developer |
appid |
|
consumerkey |
||
developeremail |
||
developerid |
||
requesttoken |
requesttoken |
consumerkey |
verifier |
verifier |
דוגמה לקובץ XML של פרופיל ישות
כדי לאחזר את ערך פרופיל הישות הרצוי עם XPath, צריך לדעת משהו על במבנה ה-XML של הפרופיל. לדוגמה של המבנה, אפשר להשתמש בקריאה ל-API לניהול כדי לקבל XML של הישות הרצויה. לפרטים, אפשר לעיין ב-Management API .
בקטעים הבאים מופיעים קוד לקריאות ל-API, וכן XML לדוגמה מהקריאה.
אפליקציות
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u email:password
כדאי לעיין גם במאמר הורדת האפליקציה ארגון לפי מזהה אפליקציה במאמרי העזרה של Edge management API.
או:
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email}/apps/{app_name} \ -u email:password
ראו גם קבלו Developer App Details בחומר העזר בנושא Edge management API.
פרופיל לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <App name="thomas-app"> <AccessType>read</AccessType> <ApiProducts/> <Credentials> <Credential> <Attributes/> <ConsumerKey>wrqOOOiPArFI0WRoB1gAJMRbOguekJ5w</ConsumerKey> <ConsumerSecret>WvOhDrJ8m6kzz7Ni</ConsumerSecret> <ApiProducts> <ApiProduct> <Name>FreeProduct</Name> <Status>approved</Status> </ApiProduct> </ApiProducts> <Scopes/> <Status>approved</Status> </Credential> </Credentials> <AppFamily>default</AppFamily> <AppId>ab308c13-bc99-4c50-8434-0e0ed1b86075</AppId> <Attributes> <Attribute> <Name>DisplayName</Name> <Value>Tom's Weather App</Value> </Attribute> </Attributes> <CallbackUrl>http://tom.app/login</CallbackUrl> <CreatedAt>1362502872727</CreatedAt> <CreatedBy>admin@apigee.com</CreatedBy> <DeveloperId>PFK8IwOeAOW01JKA</DeveloperId> <LastModifiedAt>1362502872727</LastModifiedAt> <LastModifiedBy>admin@apigee.com</LastModifiedBy> <Scopes/> <Status>approved</Status> </App>
מוצר API
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/apiproducts/{apiproduct_name} \ -u email:password
מידע נוסף זמין במאמר קבלת API מוצר בחומר העזר של Edge management API.
XPath לדוגמה, מאחזר את משאב ה-API השני (URI) ממוצר ה-API שנקרא
weather_free
:
/ApiProduct['@name=weather_free']/ApiResources/ApiResource[1]/text()
פרופיל לדוגמה המוחזר כ-XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ApiProduct name="weather_free"> <ApiResources> <ApiResource>/forecastrss, /reports</ApiResource> </ApiResources> <ApprovalType>auto</ApprovalType> <Attributes> <Attribute> <Name>description</Name> <Value>Introductory API Product</Value> </Attribute> <Attribute> <Name>developer.quota.interval</Name> <Value>1</Value> </Attribute> <Attribute> <Name>developer.quota.limit</Name> <Value>1</Value> </Attribute> <Attribute> <Name>developer.quota.timeunit</Name> <Value>minute</Value> </Attribute> <Attribute> <Name>servicePlan</Name> <Value>Introductory</Value> </Attribute> </Attributes> <CreatedAt>1355847839224</CreatedAt> <CreatedBy>andrew@apigee.com</CreatedBy> <Description>Free API Product</Description> <DisplayName>Free API Product</DisplayName> <Environments/> <LastModifiedAt>1355847839224</LastModifiedAt> <LastModifiedBy>andrew@apigee.com</LastModifiedBy> <Proxies/> <Scopes/> </ApiProduct>
חברה
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name} \ -u email:password
ראו גם קבלו פרטי החברה בחומר העזר של Edge management API.
פרופיל לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Company name="theramin"> <Apps/> <DisplayName>Theramin Corporation</DisplayName> <Organization>apigee-pm</Organization> <Status>active</Status> <Attributes> <Attribute> <Name>billing_code</Name> <Value>13648765</Value> </Attribute> </Attributes> <CreatedAt>1349208631291</CreatedAt> <CreatedBy>andrew@apigee.com</CreatedBy> <LastModifiedAt>1349208631291</LastModifiedAt> <LastModifiedBy>andrew@apigee.com</LastModifiedBy> </Company>
מפתח של החברה
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/companies/{company_name}/developers/{developer_name} \ -u email:password
פרופיל לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Developers> <Developer> <Email>ntesla@theramin.com</Email> <Role>developer</Role> </Developer> </Developers>
מפתח יצרן
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email}/apps/{app_name}/keys/{consumer_key} \ -u email:password
ראו גם אפשר לקבל פרטים חשובים על אפליקציה למפתחים במאמרי העזרה של Edge management API.
XPath לדוגמה:
/Credential/ApiProducts/ApiProduct[Name='weather_free']/Status/text()
פרופיל לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Credential> <Attributes/> <ConsumerKey>XLotL3PRxNkUGXhGAFDPOr6fqtvAhuZe</ConsumerKey> <ConsumerSecret>iNUyEaOOh96KR3YL</ConsumerSecret> <ApiProducts> <ApiProduct> <Name>weather_free</Name> <Status>approved</Status> </ApiProduct> </ApiProducts> <Scopes/> <Status>approved</Status> </Credential>
מפתח
$ curl -H "Accept:text/xml" -X GET \ https://api.enterprise.apigee.com/v1/o/{org_name}/developers/{developer_email} \ -u email:password
ראו גם קבלת מפתח ב חומרי העזר של Edge management API.
XPath לדוגמה:
/Developer/Attributes/Attribute[Name='my_custom_attribute']/Value/text()
/Developer/Email/text()
פרופיל לדוגמה:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Developer> <Apps> <App>weatherappx</App> <App>weatherapp</App> </Apps> <Email>ntesla@theramin.com</Email> <DeveloperId>4Y4xd0KRZ1wmHJqu</DeveloperId> <FirstName>Nikola</FirstName> <LastName>Tesla</LastName> <UserName>theramin</UserName> <OrganizationName>apigee-pm</OrganizationName> <Status>active</Status> <Attributes> <Attribute> <Name>project_type</Name> <Value>public</Value> </Attribute> </Attributes> <CreatedAt>1349797040634</CreatedAt> <CreatedBy>rsaha@apigee.com</CreatedBy> <LastModifiedAt>1349797040634</LastModifiedAt> <LastModifiedBy>rsaha@apigee.com</LastModifiedBy> </Developer>
משתני זרימה
כשמאחזרים את פרופיל הישות שצוין במדיניות AccessEntity, הפורמט הוא XML אובייקט הפרופיל מתווסף להקשר של ההודעה כמשתנה. אפשר לגשת אליו כמו לכל מכשיר אחר תוך התייחסות לשם המשתנה. השם שסיפק המשתמש במדיניות AccessEntity מוגדרת כקידומת המשתנה של שם המשתנה.
לדוגמה, אם מבוצעת מדיניות AccessEntity בשם GetDeveloper
,
הפרופיל בפורמט XML מאוחסן במשתנה שנקרא
AccessEntity.GetDeveloper
. לאחר מכן ניתן לנתח את הפרופיל בפורמט XML באמצעות
XPath המוגדר במדיניות exPathVariables שמציינת AccessEntity.GetDeveloper
כמקור.
התייחסות לשגיאות
במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בתקלות תוכלו לקרוא מידע נוסף בנושא.
שגיאות בזמן ריצה
ללא.
שגיאות בפריסה
שם השגיאה | מחרוזת תקלה | סטטוס HTTP | מופיע כאשר |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
לא רלוונטי | סוג הישות שנעשה בו שימוש חייב להיות אחד מהסוגים הנתמכים. |
נושאים קשורים
ExtractVariables
: מדיניות exportVariablesAssignMessage
: מדיניות AssignMessage