You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

APIs Explorer的Firestore projects.databases.documents.list接口正则校验异常

APIs Explorer projects.databases.documents.list 接口校验规则缺陷说明

摘要:APIs Explorer 提供的projects.databases.documents.list接口的“试用此API”功能,似乎对parent参数设置了过于严格/错误的正则校验规则,同时对collectionId参数存在不合理的必填要求。

由于gcloud firestore和firebase firestore均未提供集合列表查询功能,我计划开发一个简单工具实现该需求。

和往常一样,我先通过使用体验较好的APIs Explorer调研相关API方法,但发现projects.databases.documents.list的“试用此API”功能对parent参数的正则校验规则似乎过于严格甚至存在错误。

官方文档明确说明接口规则如下:

https://firestore.googleapis.com/v1/{parent=projects/*/databases/*/documents/*/**}/{collectionId}

同时对参数的说明为:
必填项,父资源名称,支持两种格式:

  • projects/{project_id}/databases/{database_id}/documents
  • projects/{project_id}/databases/{database_id}/documents/{document_path}

示例:projects/my-project/databases/my-database/documents 或 projects/my-project/databases/my-database/documents/chatrooms/my-chatroom

但我使用谷歌给出的第一种格式示例projects/my-project/databases/my-database/documents时,接口调用失败:
错误截图

APIs Explorer仅接受第二种格式的parent参数值,且强制要求填写collectionId参数,而该参数在部分场景下并非必填项:
参数要求截图

APIs Explorer会将collectionId拼接在parent后生成请求URL。当parent以/documents结尾(该格式当前不被APIs Explorer允许)时,拼接后可访问chatrooms集合;当parent以/documents/chatrooms/my-chatroom结尾时,可查询该文档下的messages子集合。但当前的参数限制导致无法通过APIs Explorer查询projects/my-project/databases/my-database/documents/chatrooms路径:需要将collectionId设为chatrooms,但对应的父路径projects/my-project/databases/my-database/documents不被APIs Explorer允许输入。

我使用自己的项目(${PROJECT})和(default)作为{database_id},通过curl调用官方示例的格式可正常运行:

TOKEN=$(gcloud auth print-access-token)

PROJECT=...
PARENT=projects/${PROJECT}/databases/(default)/documents
COLLECTION=...

curl \
--header "Authorization: Bearer ${TOKEN}"   \
--header 'Accept: application/json'   \
--write-out '%{response_code}' \
--output /dev/null \
--silent \
https://firestore.googleapis.com/v1/${PARENT}/${COLLECTION}

# 返回状态码
200

该API在逐层查询子集合时也可正常工作。

在此发布该问题,希望如果APIs Explorer确实存在此缺陷的话可以尽快修复,避免其他开发者遇到同类问题受阻。

备注:另外我还发现该工具生成的cURL、HTTP、JavaScript示例代码不会根据“API Key”复选框的状态自动调整:当取消勾选“API Key”时,生成的调用代码中仍会携带该参数,不符合预期。


内容的提问来源于stack exchange,提问作者DazWilkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:00:03