繁体   English   中英

嵌套路由Azure Function返回404未找到

[英]Nested route in Azure Function returns 404 not found

在我的 Azure Function 中,我有多个处理 GET、PUT 和 POST API 的函数,它们都工作正常。 每个 function 都有一个 index.js 文件只处理一个 HttpMethod & 我在 hosts.json 中有一个“api”的路由前缀。 其中一个功能的 function.json 可以在下面找到

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "route": "bike/{id}/like",
      "methods": [
        "put"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
  ]
}

我面临的问题是下面的两个 PUT 请求不起作用,我收到 404 not found。 但是,当我在 vscode 中本地运行 function 并使用 Postman 检查时,这似乎有效。

http://<MyAzureFuncName>.azurewebsites.net/api/bike/63d51c0bb593aec8734638e5/like

http://<MyAzureFuncName>.azurewebsites.net/api/bike/63d51c0bb593aec8734638e5/dislike

更新 1我刚刚发现使用门户中 Azure function 上的测试/运行功能调用上述 API 有效,但当我尝试使用 Postman 时无效。任何想法为什么会这样

我也有 GET 和 PUT 的更新方法,遵循类似的签名(如下所示),两者都在本地工作,但在 Azure 上,PUT 在检查 Postman 时返回 GET 结果。这个 PUT 过载是否是混淆的原因。

http://<MyAzureFuncName>.azurewebsites.net/api/bike/63d51c0bb593aec8734638e5

更新 2

我发现如果我使用 https 而不是 http,上述所有 PUT 请求都有效。其他 POST、DELETE 和 GET 请求都适用。 这更令人费解,任何人都可以对此有所了解。

如果您能提供帮助和指导,我将不胜感激。

谢谢

由于您可以使用 https 而不是 http 到达端点,因此我假设错误是HTTP Only设置。

导航到您的 Function 应用程序,go 到设置部分中的TLS/SSL 设置(经典) ,然后将HTTPS Only切换到Off


说到这一部分:

我也有 GET 和 PUT 的更新方法,遵循类似的签名(如下所示),两者都在本地工作,但在 Azure 上,PUT 在检查 Postman 时返回 GET 结果。这个 PUT 过载是否是混淆的原因。

我会说在发出 PUT 请求时返回资源是正常的。 例如,如果您更新资源,您将返回包含更新信息的数据。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM