AzureFunctions作为WebApp指南

时间:2017-04-13 03:48:12

标签: azure azure-functions

Azure功能非常棒。我正在寻找关于设置Azure功能的最佳方法的指导/建议,处理多个网页,如webApp和/或在Azure功能中托管webApp。

在亚马逊Lambda / AI.Gateway中我可以拥有AI。网关路由多个请求URL到同一个lambda函数,但我没有看到如何使用Azure函数完成此操作。

示例如果我有一个azure函数设置为:http://hostname/myfunc如果我可以设置它是很好的,所以如果用户输入http://hostname/myfunc/home我的azure函数仍然会被调用并且我的函数可以处理在它自己的路由逻辑上。

我尝试使多个代理指向同一个Azure功能,但我没有将代理网址作为请求信息的一部分

作为一种解决方法,我可以为每个http URL提供单独的Azure功能,但这看起来有点矫枉过正。

1 个答案:

答案 0 :(得分:1)

Azure Function Proxies应该可以帮到你。

假设您有一个带有以下URL的azure函数 https://testfunctionproxies.azurewebsites.net/api/HttpTriggerCSharp1?name=alice

如果您还希望调用此功能 https://testfunctionproxies.azurewebsites.net/api/HttpTriggerCSharp1/home?name=alice

您可以创建代理。这个代理看起来像这样。 enter image description here

如果您想让其他路线指向同一个功能,只需添加更多代理即可。

您的proxies.json看起来像这样

{
"proxies": {
    "proxy1": {
        "matchCondition": {
            "route": "/api/HttpTriggerCSharp1/home"
        },
        "backendUri": "https://testfunctionproxies.azurewebsites.net/api/HttpTriggerCSharp1"
    },
    "proxy2": {
        "matchCondition": {
            "route": "/home"
        },
        "backendUri": "https://testfunctionproxies.azurewebsites.net/api/HttpTriggerCSharp1"
    }
}

}

这样你的功能现在也可以被称为: https://testfunctionproxies.azurewebsites.net/home?name=alice

如果需要识别函数中的路径,可以将查询字符串参数传递给后端,以识别原始路径。

{
   "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "proxy1": {
            "matchCondition": {
                "route": "/api/HttpTriggerCSharp1/home"
            },
            "backendUri": "https://testfunctionproxies.azurewebsites.net/api/HttpTriggerCSharp1",
            "requestOverrides": {
                "backend.request.querystring.originalPath": "/api/HttpTriggerCSharp1/home"
            }
        },
        "proxy2": {
            "matchCondition": {
                "route": "/home"
            },
            "backendUri": "https://testfunctionproxies.azurewebsites.net/api/HttpTriggerCSharp1?origninalPath=home",
            "requestOverrides": {
                "backend.request.querystring.originalPath": "/home"
            }
        }
    }
}

现在,如果你致电https://testfunctionproxies.azurewebsites.net/home?name=alice 还会给你原始路径