autodesk-forge - 模型衍生 API 发布作业 - 400 错误请求“无效的‘设计’参数”
问题描述
我已将 Revit 模型上传到我的 OSS 存储桶并尝试将文件转换为 svf,但我得到以下信息:
400 错误请求{“诊断”:“无效的‘设计’参数。”}
我是 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"
]
}
]
}
}
解决方案
对于有人遇到过类似的问题
正如我们所讨论的,导致此问题的主要原因是urn:
在将上传的文件objectId
转换为 base64URN 时丢失。
通过PUT buckets/:bucket_key/objects/:object_name将模型文件上传到 Forge OSS 存储桶后,您将获得如下响应:
{
"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 作业触发模型转换之前,objectId
必须通过 Base64 编码器(例如此工具)进行编码,它变为以下内容:
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
推荐阅读
- node.js - google api auth 数据存储在节点的什么位置?
- python - 由于其中有空格而找不到文件
- mysql - 恢复使用 --no-create-info 创建的 mysqldump 并希望跳过当前数据库中不存在的表
- django - 返回查询集时如何仅计算()特定字段上的不同值
- node.js - Node.js TCP 客户端使用“net”包与远程服务器通信
- google-apps-script - 单击按钮后需要警报确认操作已执行
- c++ - 错误:由于要求 '!is_signed,static_assert 失败
::value' "" static_assert((!is_signed<_Tp>::value), ""); - javascript - 如何访问flutter web IFrameElement?
- python - 在 Python 中将数据打印为数组
- azure-devops-server-2020 - Azure DevOps 项目附件