我想从请求的JSON主体中获取变量。目前,我在请求预流程中有这个提取变量策略:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ExtractVariables async="false" continueOnError="true" enabled="true" name="extractvariables-grabrequestpayload">
<DisplayName>ExtractVariables-GrabRequestPayload</DisplayName>
<Source clearPayload="false">request</Source>
<FaultRules/>
<Properties/>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
<JSONPayload>
<Variable name="payload">
<JSONPath>$</JSONPath>
</Variable>
<Variable name="method">
<JSONPath>$.method</JSONPath>
</Variable>
</JSONPayload>
<VariablePrefix>myprefix</VariablePrefix>
示例请求正文如下:
{ “方法”:“取消”, “params”:{ “分区”: “05”, “itemnumber”:“1”, “收件人号码”:“1”, “SKU”: “0JAX330000” } }
但是,我没有看到跟踪中的变量,即使我可以看到content.request正确地填充了上面的JSON并且正在执行策略。我看不到任何从请求体中获取此信息的引用,只有响应。这不可能吗?
答案 0 :(得分:1)
很少有尝试:
application/json
才能使apigee jsonpath提取工作<Point id="Execution">
和<Property name="stepDefinition-name">extractvariables-grabrequestpayload</Property>
。这是您的提取变量策略执行步骤。这里的Point id检查VariableAccess元素。如果有任何设置,它将在这里显示。像<Set name="extractvariables-1.invoked" success="true" value="true"/>
一样。这表示策略已成功执行,并且是否已设置任何变量。 答案 1 :(得分:0)
您使用的是经典(较旧)版本的跟踪工具吗? 您可能想尝试点击&#34;尝试新的BETA版本TRACE&#34;在右上角。 如果使用它会显示您正在寻找的变量,请告诉我。
答案 2 :(得分:0)
ExtractVariables策略不会通过UI显示变量。您可以使用JavaScript策略调试代码并显示这些变量。此策略应在ExtractVariables策略之后执行。然后跟踪工具应显示变量。
context.getVariable('myprefix.payload');
context.getVariable('myprefix.method');
您还可以设置另一个变量来查看实际值:
context.setVariable('method-in-JavaScript', context.getVariable('myprefix.method') )
答案 3 :(得分:0)
调试内联变量的另一种方法显示在变量sample proxy:
中https://github.com/apigee/api-platform-samples/tree/master/sample-proxies/variables
将变量写入响应HTTP标头可能很有用,这样您就可以在迭代时立即看到新JSONPath的结果。