如何使用apigee将数据从1个api发送到另一个api

时间:2019-01-24 06:46:46

标签: redirect apigee

我最近开始使用apigee代理。请不要阻止我。 我正在使用邮递员将数据发布到代理中。 我分配了一个提取策略来从json数据中提取一些值,例如 速度,纬度,经度等 然后,我已根据客户端要求使用了分配策略将速度转换为gpsspeed等。 之后,如果速度高于50,则我使用javascript策略输出,然后高于或低于。 我正在举例说明数据。 现在我想将结果数据转发到另一个api。也许是apigee提供的用于测试目的的任何东西。我想查看结果api中的数据。 我使用服务调出策略将数据发送到另一个URL。 我附上了政策。

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <ServiceCallout name="ServiceCallout-GeocodingRequest1">
 <DisplayName>Inline request message</DisplayName>
 <Request variable="callAnotherService">
    <Set>
        <Payload contentType="application/json">
          {response.content} // reading data from javascript policy
        </Payload>
    </Set>
</Request>
<Response>CalloutResponse</Response>
<Timeout>30000</Timeout>
<HTTPTargetConnection>
    <URL>http://httpbin.org/anything</URL>
</HTTPTargetConnection>

trace call 我已经附上了JavaScript政策。 我附上了政策。

 var content = context.getVariable("response.content") //read the response
  content = JSON.parse(content); //parse into an object
  if (content.speed > 50) { //apply the condition
  content.speed = "high";
   }
  else {
  content.speed = "low";
  }
  context.setVariable("response.content", JSON.stringify(content)); //set it 
  back on the response

有人可以帮助我如何将数据转发到另一个api?我的过程正确吗?从Java脚本策略中提取变量的过程正确吗?请指导我。

1 个答案:

答案 0 :(得分:1)

好的,如果您确定setVarible之后的值不为空,请尝试下面的代码。

注意::在您的JavaScript策略中,将值重新设置为变量名后(不引起混淆),我更改了变量名。

var content = context.getVariable("response.content") //read the response
content = JSON.parse(content); //parse into an object
if(content.speed > 50){ 
    content.speed = "high";
}
else{
    content.speed = "low";
}
context.setVariable("serviceCalloutRequest", JSON.stringify(content)); //I have changed from "response.content" to "serviceCalloutRequest"

并在“服务调用策略”中尝试以下操作:

<Request clearPayload="true" variable="callAnotherService">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Set>       
        <Payload variablePrefix="@" variableSuffix="#">@serviceCalloutRequest#</Payload>
        <Verb>POST</Verb>
    </Set>
</Request>

使用 variablePrefix variableSuffix 来引用您在javascript策略中分配的值,在这种情况下,我指的是“ serviceCalloutRequest”。