模型衍生 API 发布作业 - 400 错误请求“无效的‘设计’参数”

Posted

技术标签:

【中文标题】模型衍生 API 发布作业 - 400 错误请求“无效的‘设计’参数”【英文标题】:Model Derivative API Post Job - 400 Bad Request "Invalid 'design' parameter" 【发布时间】:2018-12-20 17:44:19 【问题描述】:

我已将 Revit 模型上传到我的 OSS 存储桶并尝试将文件转换为 svf,但得到以下信息:

400 Bad Request "diagnostic":"Invalid 'design' parameter."

我是 Forge API 的新手,不确定哪里需要设计参数或它指的是哪里,所以任何指导都将不胜感激。

POST https://developer.api.autodesk.com/modelderivative/v2/designdata/job

Headers
Authorization: Bearer AccessToken
Content-Type: application/json

Body

   "input": 
     "urn": "MyDesignBase64Urn",
     "compressedUrn": false,
     "rootFilename": "test-project.rvt"
   ,
   "output": 
     "destination": 
       "region": "us"
     ,
     "formats": [
       
         "type": "svf",
         "views": [
           "2d",
           "3d"
         ]
       
     ]
   
 

【问题讨论】:

您的 RVT 版本是多少?目前,Forge Model Derivative API 仅支持 Revit 2015 及更高版本。 文件是使用 Revit 2017 保存的。 我无法使用 Revit 2017 示例 RVT 文件 rac_basic_sample_project.rvt 从我这边获取 repo。我可以请您帮忙翻译一份 Revit 2017 的示例 RVT 文件吗? 这是我使用的 2017 rac_basic_sample_project.rvt 的链接dropbox.com/s/l8fg2m880v2jq0r/…,这是一个 Postman 屏幕截图的链接,显示了 json 正文和 400 响应 dropbox.com/s/wfrgrv6sfonxl08/… 谢谢陈奕迅!为查看器准备文件的教程帮助我理解了正确的骨灰盒格式(我错过了前导的“骨灰盒:”)。它现在对我有用。另外,是的,我昨天在 forge.help@autodesk.com 上问了同样的问题。再次感谢! 【参考方案1】:

对于遇到类似问题的人

正如我们所讨论的,导致此问题的主要原因是在将上传文件的 objectId 转换为 base64URN 时缺少 urn:

通过PUT buckets/:bucket_key/objects/:object_name将模型文件上传到Forge OSS bucket后,你会得到如下响应:


    "bucketKey": "mybucket",
    "objectId": "urn:adsk.objects:os.object:mybucket/rac_basic_sample_project.rvt",
    "objectKey": "rac_basic_sample_project.rvt",
    "sha1": "6d0defe9c4f8e36c7786254a3d07f9991dbf8d91",
    "size": 16474112,
    "contentType": "application/octet-stream",
    "location": "https://developer.api.autodesk.com/oss/v2/buckets/mybucket/objects/rac_basic_sample_project.rvt"

上传模型的 URN 将是上述响应中的objectId,即urn:adsk.objects:os.object:mybucket/rac_basic_sample_project.rvt。在通过 API POST job 触发模型转换之前,objectId 必须经过 Base64 编码器(例如 this tool)编码,它变为以下:

dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bXlidWNrZXQvcmFjX2Jhc2ljX3NhbXBsZV9wcm9qZWN0LnJ2dA==

但是有两个无效符号,即base64编码的URN末尾的两个=。您必须按如下方式删除它们并使用此 URN(URL-safe Base64 (no padding) 版本)来触发 Forge MD API 的翻译作业。

dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6bXlidWNrZXQvcmFjX2Jhc2ljX3NhbXBsZV9wcm9qZWN0LnJ2dA

详见本官方教程:https://developer.autodesk.com/en/docs/model-derivative/v2/tutorials/prepare-file-for-viewer

【讨论】:

以上是关于模型衍生 API 发布作业 - 400 错误请求“无效的‘设计’参数”的主要内容,如果未能解决你的问题,请参考以下文章

Clarifai 人脸检测模型 - 400 错误请求错误

模型衍生 API 响应未通过 Jackson 映射

Azure DevOps 发布 Api 400 错误请求错误

TypeScript POST API 请求错误 400 - 错误请求

Spotify API 发布请求将曲目添加到播放列表 - 错误 400 错误请求

Web api: 400 错误请求