BIM 360:仅持资源URN能否快速查询所属项目ID等相关信息?
解决方案
完全不需要递归遍历所有hubs发起多次接口调用,直接调用Data Management API的资源路径查询能力,单次请求就能拿到目标文件所属的project id和对应version id,具体操作方式如下:
- 先处理你手头的URN:如果是模型衍生服务使用的URL安全Base64编码格式的URN,先做URL安全Base64解码,得到原始资源URN,原始格式通常类似
urn:adsk.wipprod:fs.file:vf.xxxxxx?version=1;如果你持有的已经是原始格式的文件URN,直接使用即可。 - 向Data Management的命令执行接口发起POST请求,在请求体中指定执行
get-resource-path命令,将处理后的原始文件URN作为待查询的资源ID传入即可。 - 接口返回结果中会直接包含该文件归属的project id、对应version id,同时还会返回所属hub、父文件夹的全链路位置信息,不需要做任何层级遍历。
调用时需要注意:请求头携带的access_token需要具备目标数据的读取权限,对应的权限范围要包含data:read。
接口请求的参考结构如下:
请求方法:POST
请求端点:https://developer.api.autodesk.com/data/v1/commands
请求体示例:
{ "jsonapi": { "version": "1.0" }, "data": { "type": "commands", "attributes": { "extension": { "type": "commands:autodesk.core:GetResourcePath", "version": "1.0.0" } }, "relationships": { "resources": { "data": [ { "type": "resources", "id": "替换为你处理好的原始文件URN" } ] } } } }
解析返回结果时,从data.relationships.resources.data[0]的关联字段里就能直接提取到需要的project id和version id,全程仅需1次接口调用,性能远高于全量遍历方案。
内容的提问来源于stack exchange,提问作者Mario Rosales
相关产品推荐
相关产品推荐

