0

我一直在谷歌搜索和谷歌搜索,但我仍在尝试了解 API 网关的一个方面,如 Gloo 或 Kong。我知道您可以配置它们,以便面向外部的 URL “连接”到幕后具有可能完全不同的 URL 的内部服务器。这部分似乎是一个简单的映射练习。

但是我不明白的是,如果这些服务之一在其响应中返回一个 URL(给它自己甚至其他服务),你会怎么做。我真的看不到很多你将如何处理这个问题的例子。以 Gloo 为例,该VirtualService实例将定义“转发”路由(获取面向公众的 URL 和请求并重写它们以转发到内部服务)。“内部”的服务不知道这个路由是什么样的,所以他们无法预测面向公众的 URL 是什么。所以我会假设他们会使用他们知道的(唯一的)路由返回(例如,JSON)响应,其中包含链接,然后 API 网关将获取响应并重写其中的任何链接。

但我找不到任何关于此的文档?特别是,我感兴趣的是让一个服务返回链接可以解析到其他服务,并确保这些重写也正确完成。据我所知,所需的信息都存储在 中VirtualService,因此,除了 Gloo 代理之外,没有人可以真正进行这种重写,而且我没有看到任何证据。

我错过了什么吗?!?

谢谢

4

1 回答 1

0

Gloo Edge 支持在代理中转换响应,它可以在 VirtualService 中指定。该文档显示了下面的示例,该示例转换了响应的“:状态”:

apiVersion: gateway.solo.io/v1
kind: VirtualService
metadata:
  name: update-response-code
  namespace: gloo-system
spec:
  virtualHost:
    domains:
    - '*'
    routes:
    - matchers:
       - prefix: /
      routeAction:
        single:
          upstream:
            name: postman-echo
            namespace: gloo-system
      options:
        autoHostRewrite: true
    options:
      transformations:
        responseTransformation:
          transformationTemplate:
            headers:
              # We set the response status via the :status pseudo-header based on the response code
              ":status":
                text: '{% if default(data.error.message, "") != "" %}400{% else %}{{ header(":status") }}{% endif %}'

您可以在API 文档中找到所有转换选项,这些选项应该支持您更改主机和路径标头(即 URL)的意图。

于 2021-10-28T14:27:37.637 回答