开发者问题收集

模型导数:获取特定对象的属性失败,出现 404

2021-03-02
297

我在使用 Autodesk Forge Model Derivative API 时遇到了一个奇怪的问题。在使用 :urn/metadata/:guid/properties 端点获取对象属性时,我有时会收到包含以下文本的 404 响应:

{"diagnostic":"Model should be classified to SVF first">

模型作为 IFC 上传,并且肯定会被转换为 SVF。

以下是失败的示例请求:

curl -H "Authorization: Bearer <token>" https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6OTliYzRhNTUtNzM5My00ZTc0LTg5YjEtMTE4ODNhYWNjYjFhLnByb2plY3RzLmFwcC5pbWVyc28uY29tLzIwMjEtMDEtMjFUMTE6MjY6MDMlMkZESUhfUklCLmlmYw/metadata/29a39a8b-7ff3-42c3-9dfe-471e3ae0677d/properties?objectid=889

我发现,如果我发送相同的请求但不指定 objectid ,似乎有些问题得到了解决。此后,类似上述的新请求就会成功。但是,我不知道这样的“修复”能持续多久,而且我不想每次都重复这个过程来获取单个对象的属性。

谁能帮忙?

1个回答

我无法重现该问题,但这里有一些与此端点相关的信息。

由于属性数据库可能非常大,此端点通常会返回 202 HTTP 代码,以告诉您服务器正在内存中加载 sqlLite3 数据库。当您收到 202 响应时,这意味着您需要稍后再回来询问。

带有响应 202 的正文示例

{
    "result": "success"
}

加载数据库后,它会在内存中停留一段时间,具体取决于您在这些端点上进行的调用次数,然后服务器会从内存中丢弃数据库(它将在那里停留至少几分钟)。

如果资源非常大,您可能需要使用 forceget 参数。查看该参数的文档以了解更多详细信息。

sqlLite 数据库是在 SVF 生产过程中最后构建的,并最后发布在服务器上。设计文件的属性以 2 种格式提取:又名 json (json.gz) 和 sqlLite (sdb/db)。Autodesk Viewer 仅使用 json 格式,但其他系统可能更喜欢使用 sqlLite。当您的代码在客户端浏览器中执行时,json 方法会更容易。我不确定您会发生什么,但我相信 sqlLite 数据库尚未完全发布在 S3 上,因此不可用。我很想跟进这个问题,以了解您遇到问题的确切情况 - 请通过 cyrille at autodesk.com 与我联系。

旁注:我有一个旧示例发布在 此处 以帮助读取属性,最近我决定重写它 此处 ,但它尚未完全完成,而 json.gz propertyServer 组件几乎已完成。


3 月 4 日更新

与 g-birk 交谈后,我能够重现该问题。这发生在 EMEA 存储服务器上发布的模型上。在 Autodesk 工程部门修复此问题之前,g-birk 请求树的解决方法是可行的方法。

cyrille
2021-03-03