【发布时间】:2021-05-16 14:47:41
【问题描述】:
我们正在使用 Swagger/Swashbuckle 生成 OpenApi 定义。然后将此定义导入 Azure API 管理。
我们在 get 请求上有一些查询字符串参数,这些参数已标记为必需。我们的验证确保查询字符串参数存在且有效,否则我们返回 400 错误请求,其中包含哪些参数无效/缺失的详细信息。 OpenAPI 定义的相关部分如下。两个查询字符串参数(标记为必填)和一个路径参数(标记为必填)。
我的问题是 OpenApi 定义转换为 APIM 操作的方式。
需要的查询字符串参数作为模板参数添加到操作url中。这意味着如果未提供它们,APIM 无法将请求与操作匹配,我们会向调用者返回 404,而不是后端将返回的有用的 400。
我无法轻松地将空值添加到查询字符串中。我无法在操作的入站策略中执行此操作,因为它与操作不匹配。在全局入站策略中执行此操作意味着我必须自己识别操作(这只是众多操作之一)。同样,虽然我可以在 onerror 策略中返回 400 错误请求,但我不能轻易告诉调用者该请求有什么问题。
我认为它已内置于导入过程中。当我将模板参数更改为门户中的查询参数并导出时,OpenApi 定义实际上是相同的。当我重新导入导出的模板时,同样的事情发生了。我还尝试通过看起来更有希望的 Wadl,但我无法重新导入该模板。
有没有办法将模板查询字符串参数移动为查询字符串参数?还有其他选择吗?
【问题讨论】:
-
我也收到了