我的目的是通过笔记 id 获取笔记的内容
根据 API 文档的介绍,我先调用 /api/filetree/getPathByID
,将笔记 id 作为参数传入,获得存储路径,再调用 /api/file/getFile
,将存储路径传入,获得笔记内容。
但是失败了,代码如下
获得存储路径的函数
def get_doc_path(doc_id: str) -> Optional[str]:
"""根据文档ID获取存储路径
Args:
doc_id: 文档ID
Returns:
Optional[str]: 文档存储路径(相对路径),找不到返回None
"""
try:
response = requests.post(
f"{API_URL}/api/filetree/getPathByID",
headers=HEADERS,
json={
"id": doc_id,
}
)
response.raise_for_status()
path_data = response.json()['data']
logger.info(f"成功获取文档 {doc_id} 的路径信息")
return path_data
except requests.exceptions.RequestException as e:
logger.error(f"获取文档路径失败: {str(e)}")
return None
except KeyError:
logger.error("API响应格式异常")
return None
我发现 /api/filetree/getPathByID
这个 API 返回的结果与示例不同,示例中返回的是 "data": "/20210828150719-r8edxl2/20210917220056-yxtyl7i.sy"
格式,但是实际返回的是 '/20241011110802-mzcduqr.sy'
这种格式
然后作为入参传入下面的函数,获取文件内容
def get_file_content(file_path: str) -> Optional[str]: """根据文件路径获取文件内容 Args: file_path: 文件相对路径(例如"/20241011110751-egvrqqh.sy") Returns: Optional[str]: 文件内容字符串,获取失败返回None """ try: response = requests.post( f"{API_URL}/api/file/getFile", headers=HEADERS, json={ "path": "/data" + file_path # 使用从get_doc_path获取的路径 } ) response.raise_for_status() content = response.json()['data'] logger.info(f"成功获取文件 {file_path} 的内容") return content except requests.exceptions.RequestException as e: logger.error(f"获取文件内容失败: {str(e)}") return None except KeyError: logger.error("API响应格式异常") return None
我注意到参考示例中再路径前面还加了/data,所以我在代码中也加了,参考中是这么写的
{ "path": "/data/20210808180117-6v0mkxr/20200923234011-ieuun1p.sy" }
但是调用结果还是
'{"code":404,"msg":"CreateFile C:\\\\Users\\\\kursk\\\\SiYuan\\\\data\\\\20241011110802-mzcduqr.sy: The system cannot find the file specified.","data":null}'
请问问题可能出在哪里?
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于