azure-api-management - 我可以将所需的 QueryString 参数导入为 QueryString 参数而不是 APIM 中的模板参数吗?

标签 azure-api-management apim

我们正在使用 Swagger/Swashbuckle 生成 OpenApi 定义。然后将此定义导入到 Azure API 管理中。

我们在 get 请求中有一些我们标记为必需的查询字符串参数。我们的验证确保查询字符串参数存在且有效,否则我们返回 400 Bad Request,其中包含哪些参数无效/缺失的详细信息。 OpenAPI 定义的相关部分如下。两个查询字符串参数(标记为必需)和一个路径参数(标记为必需)。

OpenAPI definition extract

我的问题是 OpenApi 定义转换为 APIM 操作的方式。

所需的查询字符串参数作为模板参数添加,并添加到操作 url 中。这意味着,如果未提供它们,APIM 无法将请求与操作相匹配,我们会向调用方返回 404,而不是后端返回的有用的 400。

APIM operation template definition

我无法轻松地将空值添加到查询字符串中。我不能在操作的入站策略中这样做,因为它与操作不匹配。在全局入站策略中执行此操作意味着我必须自己确定操作(这只是众多操作之一)。同样,虽然我可以在 onerror 策略中返回 400 错误请求,但我不能轻易地告诉调用者请求出了什么问题。

我认为它内置于导入过程中。当我将模板参数更改为门户中的查询参数并导出时,OpenApi 定义实际上是相同的。当我重新导入导出的模板时,同样的事情发生了。我还尝试通过看起来更有前途的 Wadl,但我无法重新导入该模板。

有没有办法将模板查询字符串参数移动为查询字符串参数?还有其他选择吗?

最佳答案

目前(自 2018 年起)Azure APIM API 导入中存在错误。 Link .

它的状态正在审查中。我们试图直接向微软提出这个问题,但他们没有提供任何解决方案。

关于azure-api-management - 我可以将所需的 QueryString 参数导入为 QueryString 参数而不是 APIM 中的模板参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66178834/

相关文章:

Azure APIM 和 Websocket JWT 验证

Azure Api 管理 - cors 策略。无法动态地从命名值提供 <allowed-origins>

regex - 如何在 Azure API 管理策略表达式中添加正则表达式验证

azure - 如何将 azure 函数应用程序导入到 terraform 中的 apim?

Azure 中的 API 安全最佳实践

azure - 是否有一种用户友好的方式来对我的 Azure API 的用户进行身份验证,而无需传递订阅 key 或 token ?

javascript - 尝试使用 Node JS 设置 API 管理 REST API 身份验证

c# - Azure API 管理中的每个应用程序是否应该有多个 API 端点来调用单个 API 应用程序?

javascript - 为 Azure API 管理创建的 SAS token 无效

xml - 如何使用 Azure APIM 创建 OCSP 请求和验证响应?