【问题标题】:Azure API Management issue with ODataOData 的 Azure API 管理问题
【发布时间】:2019-07-20 16:33:23
【问题描述】:

我们有一个 OData v4 API,我们将其置于 Azure API 管理 (AAM) 服务之后,但在配置路由/操作时遇到了问题。简而言之,问题在于 AAM 将拒绝对路由/操作的查询,除非它被明确配置(您会收到 404 错误),但使用 OData 可以为每个操作的每个属性(属性)(端点)。问题很快变得无法控制。

OData 允许您查询单个属性/属性(例如 GET ~/api/Person(1234)/FirstName。如果我们将其放在 AAM 后面,我们需要将其定义为操作。只要有只有其中一些,但这可能意味着您必须快速定义成百上千的操作(除非我错过了什么)。我们有一个包含大约 35 个顶级操作的 API。每个资源平均有 20 个属性。那是 700我们需要定义的操作。除了所涉及的工作之外,这对于 AAM 开发人员门户的用户来说将是一次令人震惊的体验。

我希望有人能告诉我解决这个问题的简单方法。我知道我可以编写这些脚本的创建。如果您使用 OData $select 查询参数(这是我同时建议的),您也可以在一定程度上解决这个问题。我无法克服我在这里错过了什么的感觉。有没有办法为操作定义某种通配符部分(例如/Person/*)?我在 AAM 文档中找不到类似的内容。

【问题讨论】:

    标签: odata azure-api-management


    【解决方案1】:

    尝试使用 URL 模板而不是显式编写它们,即为 /{entity}/{property} 定义操作,这样它将匹配每个实体和每个实体的每个属性。如果您想在 URL 的末尾捕获多个段,也可以使用通配符。

    【讨论】:

    • 完美。通配符选项是我正在寻找的。我在文档中看不到它(仍然找不到),但是您的回答让我尝试了。对于可能想要执行此操作的其他人,/{entity/* 是您添加操作时的有效 URL。
    • 这对 ApiGatewayEndpoint/$metadata 有用吗?.. 因为这给了我 500 个内部服务器错误
    • @vitaliy-kurokhtin APIM 如何知道 $metadata 上下文?
    • 它不会由您来定义将处理 $metadata 路由的操作。一次处理所有事情可能是特定的 /$metadata 或 /*,实际上取决于代理 API 的场景和方法。
    猜你喜欢
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多