我正在尝试通过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地址。
我相信这个错误不在脚本本身,而是隐藏在骨干的某个地方。有人试过吗?
答案 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>
不确定您是否已经尝试过此操作,因为您的问题尚不完全清楚,但希望能有所帮助。