为什么Logic Apps Oracle 连接器同时使用400 和404 来表示"not found"?

Why does the Logic Apps Oracle connector use both 400 and 404 to express "not found"?

我有许多逻辑应用程序使用 Oracle DB 连接器通过本地数据网关从 Oracle 数据库检索数据。其中一些使用获取行操作,该操作 returns 使用 table 的主键找到的单行。

有时,当我们传递无法识别的 ID 时,操作会失败,状态码为 400 或 404。我确信这一点,这不是错误。我没有看到任何一个逻辑应用程序在两者之间翻转,但同一订阅中的不同逻辑应用程序和查询同一数据库返回了 400 或 404。

为什么连接器会在使用两个不同的状态代码来表示相同的结果之间切换?

对于这个问题,请检查您是否在“获取行”操作中输入了相同类型的行ID(或其他参数)。大多数 400 错误是由传递的参数和接收的参数之间的类型差异字段不匹配引起的。并且请检查您的网关是否与两个逻辑应用程序相同,网关也可能导致 400/404 错误。

如果两个逻辑应用程序之间的所有配置都相同,我认为您可以按照此 page 在 azure 门户上提出支持请求,向 azure 支持团队寻求帮助。在堆栈溢出中很难找到您问题的答案。

问题原来是其中一个 table 没有主键,尽管我们认为它有。如果 table 没有定义主键,连接器将失败并返回 400 Bad Request,如果 table 正确但 ID 不存在,则连接器将返回 404 Not Found。

错误消息在这种情况下特别无用,但现在已经理解了问题。