【发布时间】:2014-05-07 20:23:15
【问题描述】:
正如您从我之前的问题中看到的那样,我一直在做一个项目,我真的很想知道如何才能完成最后一部分。
项目快速总结:我有一个运行 Web 服务器 (Lighttpd) 和 Flask 的 Raspberry Pi。它连接了一个 RF USB 发射器,它通过 Python 脚本控制插头的电源。 (Power.py在 GitHub 上)。这行得通。
我现在需要在 Flask 中创建一个端点,以便 Salesforce 可以向它发送一些 JSON,它会理解它。
我想让它尽可能简单,所以我明白它实际上在做什么。在我的上一个问题中,确实有人向我提供了一些东西,但我认为最好有一个与之相关的具体问题,而不是试图在一个问题中涵盖太多。
我只需要发送'power=on/off'、'device=0,1,2'、'time=(secondsasinteger)' 和'pass=thepassword' 我可以将其作为 URL 变量或 POST 发送到上面链接的现有 power.py,它确实如此它。
我想要一种简单、清晰的方式,将其从 Salesforce 以 JSON 格式发送到 Flask 并使其理解请求。
我现在需要做的就是去:ip/cgi-bin/power.py?device=0&power=on&time=10&pass=password
这将加载一个 Python 脚本,并打开设备 0 10 秒。 (0 是无限的)。
如何将其转换为 JSON?我需要在 Flask 中输入什么代码才能理解它?我可以将变量转发到power.py 以便 Flask 文件只需要找到变量和值吗?
我已经在 Chrome 中下载了 Postman,这使我可以将 POST 发送到 Pi 以进行测试。
作为初学者,我在哪里可以找到有关此的更多信息?
我可以发送这样的东西吗?
'requestNumber = JSONRequest.post(
"ip/api.py",
{
deviceid: 0,
pass: "password",
time: 60,
power: "on"
},'
【问题讨论】:
-
任何带有
@app.route(...)装饰器的东西都是端点。你读过Flask Quickstart 了吗?您可能也想关注tutorial。 -
我已经完成了快速启动并制作了Hello World,并显示了时间。不过,我还没有完成该教程,它似乎使事情变得过于复杂。我只有 4 个变量,并且已经有一个可以管理它们的脚本,我实际上只需要 JSON 来发送该信息,而 Pi 来理解它。不过,我现在将完成该教程。谢谢]
-
参见
request.get_json();当某些东西使用application/jsonmimetype 发布 JSON 时,request对象上的该方法将使您能够访问已解析的 Python 表示。 -
我想我明白你的意思,但我将如何实际使用它?只需阅读更多文档,我相信我可以让 Flask 发送 POST 吗?当然,这会让事情变得更容易。如果它可以接收 JSON 格式的变量,那么只需将它们发布到我的 power.py 脚本?
-
为什么不处理
power.py在您的 Flask 端点中所做的一切?您可以使用urllib2或requests(外部)库发布到您的power.pyCGI,但为什么不让power.py处理JSON 或让Flask 服务器直接处理RF USB 发射器?
标签: python json api flask raspberry-pi