有一个分配给开发人员的自定义属性,称为“XYZ”。在API代理中,AccessEntity策略(以及教程中给出的AssignMessage和ExtractVariable策略)如何:http://apigee.com/docs/api-services/content/retrieve-entity-profiles-using-accessentity http://apigee.com/docs/api-services/content/retrieve-entity-profiles-using-accessentity) 用于检索它的值,以便可以在 Javascript 中进一步访问它?教程文档中给出的示例不是很清楚。
我的以下配置不起作用。 'XYZ' 是开发者自定义属性的名称:
AccessEntity 策略-
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AccessEntity async="false" continueOnError="false" enabled="true" name="access-developer-attribute">
<DisplayName>AccessEntity Developer Attribute</DisplayName>
<FaultRules/>
<Properties/>
<EntityIdentifier ref="XYZ"></EntityIdentifier>
<EntityType value="developer"></EntityType>
</AccessEntity>
分配消息策略 -
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="convert-accessentity-xml-to-message-request">
<DisplayName>Convert AccessEntity Xml To Message Request</DisplayName>
<FaultRules/>
<Properties/>
<Set>
<Headers/>
<QueryParams/>
<FormParams/>
<Verb/>
<Path/>
<Payload type="text/xml">AccessEntity.access-developer-attribute</Payload>
</Set>
<AssignVariable>
<Name>name</Name>
<Value/>
<Ref/>
</AssignVariable>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">accessentity.XYZ-attribute</AssignTo>
</AssignMessage>
提取变量政策 -
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="false" enabled="true" name="retrieve-developer-attribute">
<DisplayName>Retrieve Developer Domain</DisplayName>
<FaultRules/>
<Properties/>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<Source>accessentity.XYZ-attribute</Source>
<VariablePrefix>developer_attribute</VariablePrefix>
<XMLPayload stopPayloadProcessing="false">
<Namespaces/>
<Variable name="xyz" type="string">
<XPath>/Developer/Attributes/XYZ</XPath>
</Variable>
</XMLPayload>
</ExtractVariables>
JavaScript -
var xyzValue = context.getVariable("developer_attribute.xyz");
AccessEntity中的EntityIdentifier ref指的是标识要引用的开发人员的变量。您可以传入多种类型的数据来识别开发人员(developeremail、developerid、appid、consumerkey)。最好在 EntityIdentifier 元素中包含正在使用的数据类型。在下面的示例中,消费者密钥存储在变量 client_id 中:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AccessEntity async="false" continueOnError="false" enabled="true" name="access-developer-attribute">
<DisplayName>AccessEntity Developer Attribute</DisplayName>
<EntityIdentifier ref="client_id" type="consumerkey"></EntityIdentifier>
<EntityType value="developer"></EntityType>
</AccessEntity>
此外,您的AssignMessage 策略未从AccessEntity.access-developer-attribute 变量中正确检索。您需要用大括号将变量名称括起来,否则有效负载将是文本“AccessEntity.access-developer-attribute”。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="convert-accessentity-xml-to-message-request">
<DisplayName>Convert AccessEntity Xml To Message Request</DisplayName>
<Set>
<Payload type="text/xml">{AccessEntity.access-developer-attribute}</Payload>
</Set>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<AssignTo createNew="true" transport="http" type="request">accessentity.XYZ-attribute</AssignTo>
</AssignMessage>
您还会注意到,我删除了策略中未使用的字段。这使得政策更具可读性。
您的 ExtractVariables 和 JavaScript 应该可以正常工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)