我的目的是通过笔记 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}'
请问问题可能出在哪里?
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于