调用Firestore API手动设置文档ID失败的问题求助
解决Firestore REST API手动指定文档ID的400错误
核心问题分析
你遇到的"文档父名称缺少斜杠"错误,本质是API端点格式不正确或误用了请求方法。自动生成文档ID时用POST请求集合路径即可,但手动指定ID时,需要调整请求方法和端点格式。
正确实现步骤
1. 调整请求方法与端点格式
手动指定文档ID时,必须使用PUT请求,端点格式需严格遵循Firestore的路径规则:
https://firestore.googleapis.com/v1/projects/{你的项目ID}/databases/(default)/documents/test/{你要指定的文档ID}
注意:
(default)是固定写法,代表默认数据库,不能省略或修改test是你的集合名称,替换成实际集合名{你要指定的文档ID}即你用record[0]生成的唯一字符串,直接拼接在路径末尾即可
2. Python代码示例
假设用requests库调用API,正确代码如下:
import requests import json # 配置参数 PROJECT_ID = "你的项目ID" DOC_ID = record[0] # 你的唯一文档ID COLLECTION_NAME = "test" API_URL = f"https://firestore.googleapis.com/v1/projects/{PROJECT_ID}/databases/(default)/documents/{COLLECTION_NAME}/{DOC_ID}" HEADERS = { "Authorization": "Bearer 你的访问令牌", "Content-Type": "application/json" } # 要保存的文档数据 payload = { "fields": { "field1": {"stringValue": "示例值1"}, "field2": {"integerValue": 123} } } # 发送PUT请求 response = requests.put(API_URL, headers=HEADERS, data=json.dumps(payload)) print(response.status_code) print(response.json())
3. 常见错误排查
- 不要用POST请求指定ID:POST仅适用于自动生成ID的场景,手动指定必须用PUT
- 路径不能有多余或缺失的斜杠:比如不要写成
test//{DOC_ID}或test{DOC_ID},必须保证每个层级用单个斜杠分隔 - 文档ID不能包含特殊字符:Firestore文档ID禁止使用
/、\、#、[、]、*等字符,确保record[0]符合规则
内容的提问来源于stack exchange,提问作者AndreaNobili
相关产品推荐
相关产品推荐

