如何从Azure函数url中删除"api"一词

May*_*ank 11 azure azure-functions

当您创建Http触发的API时,Azure功能会将其托管

https://[function-app-name].azurewebsites.net/api/[Route-configured-in-application]
Run Code Online (Sandbox Code Playgroud)

有没有办法从URL中删除术语api并使其看起来像:

https://[function-app-name].azurewebsites.net/[Route-configured-in-application]
Run Code Online (Sandbox Code Playgroud)

Den*_*her 18

答案涵盖了Azure Functions v2解决方案,需要将http位包装在extensions属性中。

{
  "version": "2.0",
  "extensions": {
    "http": {
      "routePrefix": "customPrefix"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


May*_*ank 16

编辑host.json文件并将routePrefix设置为空字符串:

{
  "http": {
    "routePrefix": ""
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 答案现在已过时。 (7认同)

Jan*_*n_V 6

您还可以利用Azure功能代理的强大功能,如果您想明确要访问哪些方法或路由,这可能会更好.

只需创建一个proxy.json文件并将以下JSON添加到其中.

{
  "$schema": "http://json.schemastore.org/proxies",
  "proxies": {
    "myazurefunctionproxy": {
      "matchCondition": {
        "methods": ["GET"],
        "route": "/{slug}"
      },
      "backendUri": "https://%WEBSITE_HOSTNAME%/api/{slug}"
    },
  }
}
Run Code Online (Sandbox Code Playgroud)

此示例将所有GET请求重定向到带/api/前缀的路由.


Mat*_*att 6

如果您使用的是版本 2 函数,则接受的答案不再有效,而是需要将 http 设置放在扩展属性中:

"extensions": {
    "http": {
        "routePrefix": ""
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能会在查看hosts.json 参考时被发现,因为如果您只查看http 部分,它只显示 http 属性,因此请确保检查文档的开头以获取顶级 hosts.json 格式。