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功能,但这看起来有点矫枉过正。
答案 0 :(得分:1)
Azure Function Proxies应该可以帮到你。
假设您有一个带有以下URL的azure函数 https://testfunctionproxies.azurewebsites.net/api/HttpTriggerCSharp1?name=alice
如果您还希望调用此功能 https://testfunctionproxies.azurewebsites.net/api/HttpTriggerCSharp1/home?name=alice
如果您想让其他路线指向同一个功能,只需添加更多代理即可。
您的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 还会给你原始路径