通过REST API将原始值推送到Firebase
我正在尝试在Python中使用requests
库,将数据(一个原始值)推送到Firebase的某个位置。
假设我有一个urladd
(包含认证令牌的地址)。在这个位置,我想推送一个字符串
,比如说International
。根据这里的回答,我尝试了以下代码:
data = {'.value': 'International'}
p = requests.post(urladd, data = sjson.dumps(data))
但是我得到了<Response [400]>
。使用p.text
我得到了:
u'{\n "error" : "Invalid data; couldn\'t parse JSON object, array, or value. Perhaps you\'re using invalid characters in your key names."\n}\n'
看起来.value
这个键是无效的。但这正是上面链接的回答所建议的。你知道为什么这可能不工作吗?或者我该如何通过Python来实现这个功能?连接和认证没有问题,因为下面的代码可以正常工作。不过,那段代码推送的是一个对象,而不是一个原始值。
data = {'name': 'International'}
p = requests.post(urladd, data = sjson.dumps(data))
谢谢你的帮助。
2 个回答
2
上面Andrew的回答是有效的。如果还有其他人想知道如何在Python中使用requests
库来做到这一点,我觉得这会很有帮助。
import simplejson as sjson
data = sjson.dumps("International")
p = requests.post(urladd, data = data)
我之前以为数据必须先以字典的格式存在,才能转换成字符串形式的JSON。其实并不是这样,简单的字符串也可以作为sjson.dumps()
的输入。
2
你链接的那个答案是一个特定的情况,主要是当你想给一个值设置优先级的时候。一般来说,'.value' 这个名字是无效的,会报错。
如果你只是想写“International”,你应该用字符串化的 JSON 格式来表示这个数据。我手头没有 Python 的例子,但用 curl 命令可以这样写:
curl -X POST -d "\"International\"" https://...