通过REST API将原始值推送到Firebase

2 投票
2 回答
1945 浏览
提问于 2025-04-17 15:57

我正在尝试在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://...

撰写回答