Apigee策略中JavaScript修改变量失效:offsetValue始终为空
问题原因与解决办法
你的问题出在用错了政策:AssignMessage的<Set><Payload>是用来定义HTTP消息的负载内容的,里面的JavaScript代码只会被当作普通字符串存入payload,并不会被执行,所以offsetValue根本没被初始化,后续引用自然为空。
方案1:使用JavaScript政策执行变量赋值
替换掉你的AssignMessage,改用专门的JavaScript政策来设置变量:
<AssignVariable> <Name>data.request.offset</Name> <Value>0</Value> </AssignVariable> <JavaScript name="JS-Set-OffsetValue"> <Source> context.setVariable("offsetValue", 50); </Source> </JavaScript> <AssignVariable> <Name>data.request.offset</Name> <Value ref="offsetValue" /> </AssignVariable>
方案2:直接用AssignVariable简化流程
如果只是固定值赋值,完全不需要JavaScript,直接用AssignVariable一步到位:
<AssignVariable> <Name>data.request.offset</Name> <Value>0</Value> </AssignVariable> <AssignVariable> <Name>offsetValue</Name> <Value>50</Value> </AssignVariable> <AssignVariable> <Name>data.request.offset</Name> <Value ref="offsetValue" /> </AssignVariable>
这两种方式都能正确设置offsetValue,让后续的AssignVariable成功引用到它。
内容的提问来源于stack exchange,提问作者Mukesh
相关产品推荐
相关产品推荐

