כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של
Apigee X. מידע
מה
מאחזר את הפרופילים של הישויות שציינת ממאגר הנתונים של Apigee Edge. המדיניות מוסיפה
את הפרופיל במשתנה שהשם שלו הוא בפורמט AccessEntity.{policy_name}
. אפשר
להשתמש ב-AccessEntity
כדי לגשת לפרופילים של הישויות הבאות:
- אפליקציה
- מוצר API
- חברה
- מפתח חברה
- מפתח יצרן
- המפַתח
המדיניות AccessEntity
פועלת כחיפוש במסד נתונים שמבוסס על מדיניות זמן ריצה. ניתן
להשתמש בפרטי הפרופיל שהוחזרו על ידי המדיניות הזו כדי לאפשר התנהגות דינמית, כמו
ניתוב מותנה של נקודת קצה, ביצוע זרימה, אכיפת מדיניות.
צריך להשתמש במדיניות AccessEntity
כדי לקבל נתונים של פרופיל ישות כ-XML, ולהוסיף אותם למשתנה. כדי לזהות את הישות שברצונך לקבל, צריך לציין סוג
ישות ומזהה אחד או יותר שמציינים איזו ישות מהסוג הזה ברצונך לקבל. לאחר מכן, במדיניות אחרת אפשר לאחזר את נתוני פרופיל הישות באמצעות מדיניות אחרת, כמו extractsVariables או 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 מאחזרת את כתובת האימייל למפתחים שהוגדרה במדיניות extracts.
<!-- 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
כדי לציין את הישות מהסוג הרצוי. מידע על סוגי ישויות זמין במאמר סוגי ישויות ומזהים.
מאפיינים
מאפיין | התיאור | ברירת המחדל | נוכחות | תיאור |
---|---|---|---|---|
value | אחד מסוגי הישויות הנתמכים. רשימה של סוגי ישויות ומזהים מפורטת. | ללא. | חובה. | מחרוזת |
רכיב <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
למידע נוסף, ראו קבלת פרטי אפליקציה למפתחים במאמר בנושא 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
למידע נוסף, ראו Get Developer במאמר בנושא 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 שמוגדר במדיניות exPaths שבה מציינים את AccessEntity.GetDeveloper
כמקור.
הפניה לשגיאות
במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בתקלות תוכלו לקרוא מידע נוסף בנושא.
שגיאות בזמן ריצה
ללא.
שגיאות בפריסה
שם השגיאה | מחרוזת תקלה | סטטוס HTTP | מופיע כאשר |
---|---|---|---|
InvalidEntityType |
Invalid type [entity_type] in ACCESSENTITYStepDefinition
[policy_name] |
לא רלוונטי | סוג הישות שנעשה בו שימוש חייב להיות אחד מהסוגים הנתמכים. |
נושאים קשורים
ExtractVariables
: המדיניות בנושא חילוץ משתניםAssignMessage
: מדיניות להקצאת הודעה