通过url将参数传递给python azure函数

时间:2017-09-07 10:59:01

标签: python azure azure-functions

我正在尝试通过azure函数使hello world示例适用于python。基本函数尝试通过url检索名称作为输入,然后响应“Hello Name”。事实证明,通过天蓝色门户网站提供的示例模板不能实现开箱即用。基本示例如下所示:

import os
import json

postreqdata = json.loads(open(os.environ['req']).read())
response = open(os.environ['res'], 'w')
response.write("hello world from "+postreqdata['name'])
response.close()

两个环境变量req和res是临时文件的路径,这些文件将函数的输入和输出存储为json。这个想法是通过url传递的输入应该在json.loads()返回的字典中可用。唯一的困境是无论我做什么,位于os.environ ['req']的文件都是空的。

os.path.isfile(os.environ['req'])
# Returns True so the file is located at:
# D:\local\Temp\Functions\Binding\79fcec12-baf3-470e-87c3-113f64ffcef0\req
# during the execution

我尝试了Hello world JavaScript示例,它直接在azure函数上开箱即用。我的python脚本在azure-portal中执行时工作正常,但在从Web浏览器触发时失败。

该函数在Python 2.7.13上运行,扩展名为& name = MyName到https地址。

我相信这个错误不在脚本本身,而是隐藏在骨干的某个地方。有人试过吗?

2 个答案:

答案 0 :(得分:2)

您引用的默认示例(来源here)接受http POST请求,并要求您的请求正文为具有"名称"的JSON有效内容。属性。

要访问URL查询参数,我们会将它们作为不同的环境变量提供给您。例如,如果您发送查询参数" foo",则可以通过os.environ['req_query_foo']访问它。

答案 1 :(得分:0)

我也遇到了这个问题。 this链接上的示例说要使用

类型的网址进行测试
https://<app_name>.azurewebsites.net/api/MyHttpTrigger?name=<yourname>

在本地测试时,此格式有效,但我最终发现,在测试一次部署后,它会在类型为

的命令行中提供链接
https://<appname>.azurewebsites.net/api/MyHttpTrigger?code=<randomcode>/<randomcode>==

是您真正需要的。在您的&name=<yourName>上添加此链接。我为

工作
https://<appname>.azurewebsites.net/api/MyHttpTrigger?code=<randomcode>/<randomcode>==&name=<yourName>

不确定您是否已经尝试过此操作,因为您的问题尚不完全清楚,但希望能有所帮助。

相关问题