【问题标题】:How do you correctly return Location headers and do HATEOAS with Apigee?您如何正确返回 Location 标头并使用 Apigee 执行 HATEOAS?
【发布时间】:2014-08-25 16:32:52
【问题描述】:

我们的 Apigee 配置看起来有点像这样:

Netscaler LB -> Apigee 路由器/消息处理器 -> Netscaler LB - 目标服务器

在这种情况下,目标服务器是带有 Jersey 的 Java 应用程序,我正在使用 Jersey @Context 来检索相关的 URI 信息以设置例如 Location 标头,但所有请求详细信息似乎都与 Netscaler 和不是原始请求。

如果我们使用 AssignMessage 策略并手动将 X-Forwarded-Host URL 设置为客户端调用的 URL,那么一切都会正常运行。不幸的是,似乎没有我们可以使用的变量来代替硬编码 - 文档中围绕变量的所有内容似乎都表明您只能在域本身之后获取路径。

【问题讨论】:

标签: apigee


【解决方案1】:

<ProxyEnpoint> 请求段中,您可以引用变量request.header.host,它将为您提供客户端向Apigee 请求的主机。

例如,如果你的URI是https://myorg-test.apigee.net/resource,那么ProxyEndpoint的请求段中的request.header.host就会有myorg-test.apigee.net的值。

如果您尝试在TargetEndpoint 中引用它,它可能已经被目标请求的后端主机覆盖。如果您在 TargetEndpoint 中需要它,请先将其分配给 ProxyEndpoint/PreFlow/Request 中的变量,然后您可以稍后引用变量 originalHost

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="grabOriginalHost">
    <AssignVariable>
        <Name>originalHost</Name>
      <Ref>request.header.host</Ref>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

【讨论】:

  • 谢谢 - 那么你会推荐使用这个值而不是 X-Forwaded-Host 吗?我发现 X-Forwarded-Host 也可以工作,只要它设置在 Apigee 前面的 Netscaler 上。
猜你喜欢
  • 2014-05-05
  • 2021-11-12
  • 2016-12-25
  • 2015-07-18
  • 1970-01-01
  • 2022-01-23
  • 2015-01-27
  • 2020-09-23
  • 1970-01-01
相关资源
最近更新 更多