我知道我可以在Azure函数中使用查询参数来获取值
"myfunction?p=one&p2=two"
我指的是这个问题
但是它只处理C#和node.js,我想按照烧瓶样式获取值
/function/<name>/<id>
我可以直接访问,如何在Azure函数中的python中实现
我还提到了该文档,该文档仅涉及node.js和C#
https://github.com/Azure/azure-functions-host/wiki/Http-Functions
答案 0 :(得分:1)
这取决于您使用的是功能V1还是功能V2。请注意,这两种语言目前都不在通用版本中:V1中的Python语言被认为是实验性的,可能永远不会采用GA。 Functions V2的Python语言工作者刚刚进入私有预览,并且目前正在积极开发中(请参见here)。总的来说,我强烈建议使用Functions 2.0以获得最佳的python支持,因为它支持Python 3,而我相信Functions V1仅支持Python 2。
话虽如此,这是两种单独的方法:
V1
您可以通过设置HTTP触发器绑定的“ route”字段,以与在function.json中对Node和C#相同的方式设置自定义路由。路径参数可以作为字符串在环境变量REQ_PARAMS_{route_param_name_as_upper_case}
上使用。因此,在您的示例中,name
和id
的路由参数值分别为REQ_PARAMS_NAME
和REQ_PARAMS_ID
。
V2
同样,您以与所有其他语言相同的方式在function.json文件中设置自定义路由。路由参数作为属性route_params
附加在http请求对象上,类型为Mapping[str, str]
def main(req):
name = req.route_params.get('name')
return f'Hello, {name}!'
答案 1 :(得分:0)
您可以在function.json
文件中添加“路由”以更改路径,例如:
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"post"
],
"route": "contact/{version}/certificate"
}
....
]
在文件__init__.py
中,
您可以通过version
来获得version = req.route_params.get('version')
答案 2 :(得分:0)
要像azure函数中的Python Flask路由的 path 类型那样更加动态,您可以自定义如下所示的路由。 主要概念位于路线的* { restOfPath}
{
"scriptFile": "__init__.py",
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get",
"post"
],
"route": "Function1/{*restOfPath}"
},
{
"type": "http",
"direction": "out",
"name": "$return"
}
]
}
并编辑host.json以从如下所示的URL中删除单词api。
{
"http": {
"routePrefix": ""
}
}
因此,通过上述配置,您可以使用该功能来提供如下所示的URL
再次在 init 中进行访问。py如下所示使用它。您将以字符串形式获取它
req.route_params.get("restOfPath")