【问题标题】:Azure API Management passthrough to backend serviceAzure API 管理直通到后端服务
【发布时间】:2018-08-23 04:23:44
【问题描述】:

我想设置一个 Azure API 网关,它接受后端服务的请求,并简单地将请求传递到后端而不进行任何修改。例如: (-> 表示它会被路由到)

https://dude.azure-api.net/foo -> https://realapi.mycompany.com/foo

https://dude.azure-api.net/bar -> https://realapi.mycompany.com/bar

我想使用通配符进行设置,这样我就不必在每个 API 中指定每个端点。

这和Use Azure Api Management as a passthrough非常非常相似

但是,我有 GET 和 POST 的组合,因此接受的解决方案将不起作用。

谁能告诉我怎么做?

【问题讨论】:

    标签: azure azure-api-management


    【解决方案1】:

    您必须为每个 HTTP 方法创建通配符操作。对于上面的示例,您可以创建两个 API,一个带有 /foo 后缀,另一个带有 /bar。两者都应该有两个操作 - GET 和 POST - 使用“/*”作为 URI 模板。

    或者,如果您想要完整的直通 - 创建带有“/”后缀的单个 API 和两个操作 - GET 和 POST - 都带有“/*” URI 模板。

    【讨论】:

    • 由于各种原因,我无法为每个 HTTP 方法创建通配符操作。所以我尝试了第二种方法,但我不断收到 500 内部服务器错误。仍在努力解决这个问题。我尝试用一​​个众所周知的公共 REST API 替换后端,它似乎工作正常(至少 GET 调用确实如此——我无法在该 API 上测试 POST)。因此,我自己的 API 一定有一些特定的东西导致了 500 错误。我正在使用 Postman 进行测试。如果我输入真实的 URL,它可以正常工作。交换 Azure URL,我得到 500 错误。
    • 当您尝试从 Azure 门户测试事物时,您是否看到任何带有响应的跟踪?
    【解决方案2】:

    对于完整的传递,您只需将“/”指定为 API URL 后缀

    【讨论】:

    • 我试过这个,但它对我不起作用。我只是得到一个 404 not found 错误。假设我的后端 URL 是 realapi.mycompany.com,它定义了一个“GET foo”端点。我的 Azure URL 是 dude.azure-api.net 。所以调用dude.azure-api.net/foo 应该被路由到realapi.mycompany.com/foo 但我只得到404。如果我没有在Azure 中定义任何操作,我是否必须对API 设置做其他事情才能使这项工作?
    • 你必须定义操作。尝试使用空 API 后缀创建 api,并使用 /* 模板和 GET 方法进行一项操作。
    猜你喜欢
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多