Autodesk Forge 数据管理 API 下载项目
Autodesk Forge Data Management API Download Item
我正在尝试通过 Autodesk Forge 数据管理从 A360 下载文件 API。 documentation 指出 'Items' 或 'Versions' 返回的 JSON 应该有一个名为 'included.relationships.storage.meta.link.href'.
的部分
Step 5: Find the versions of an item
If you only want the latest version, you can simply get the link from
the response body of the previous step. In the above example, we can
see the storage location of House Design.rvt in the
included.relationships.storage.meta.link.href attribute
(https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/977d69b1-43e7-40fa-8ece-6ec4602892f3.rvt)
which can be used to download the item.
但是返回的 JSON 似乎缺少此部分。
即获取项目/:project_id/items/:item_id
使用 Postman
Returns
{ "jsonapi":{
"version":"1.0" }, "links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw"
} }, "data":{
"type":"items",
"id":"urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw",
"attributes":{
"displayName":"Test.dwg",
"createTime":"2015-01-07T12:54:52.0000000Z",
"createUserId":"201007051504283",
"lastModifiedTime":"2015-01-07T12:54:52.0000000Z",
"lastModifiedUserId":"201007051504283",
"extension":{
"type":"items:autodesk.core:File",
"version":"1.0",
"schema":{
"href":"https://developer.api.autodesk.com/schema/v1/versions/items:autodesk.core:File-1.0"
},
"data":{
}
}
},
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw"
}
},
"relationships":{
"tip":{
"data":{
"type":"versions",
"id":"urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw?version=1"
},
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/tip"
}
}
},
"versions":{
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/versions"
}
}
},
"parent":{
"data":{
"type":"folders",
"id":"urn:adsk.wipprod:fs.folder:co.UDepmIWYTSSfbYGIUhngIA"
},
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/parent"
}
}
},
"refs":{
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/relationships/refs"
},
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/refs"
}
}
},
"links":{
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/relationships/links"
}
}
}
} }, "included":[
{
"type":"versions",
"id":"urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw?version=1",
"attributes":{
"name":"Test.dwg",
"displayName":"Test.dwg",
"createTime":"2015-01-07T12:54:52.0000000Z",
"createUserId":"201007051504283",
"lastModifiedTime":"2015-01-07T12:54:52.0000000Z",
"lastModifiedUserId":"201007051504283",
"versionNumber":1,
"mimeType":"application/vnd.autodesk.autocad.dwg",
"storageSize":438112,
"fileType":"dwg",
"extension":{
"type":"versions:autodesk.core:File",
"version":"1.0",
"schema":{
"href":"https://developer.api.autodesk.com/schema/v1/versions/versions:autodesk.core:File-1.0"
},
"data":{
}
}
},
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1"
}
},
"relationships":{
"item":{
"data":{
"type":"items",
"id":"urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw"
},
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/item"
}
}
},
"links":{
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/relationships/links"
}
}
},
"refs":{
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/relationships/refs"
},
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/refs"
}
}
},
"downloadFormats":{
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/downloadFormats"
}
}
},
"derivatives":{
"data":{
"type":"derivatives",
"id":"dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x"
},
"meta":{
"link":{
"href":"https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x/manifest"
}
}
},
"thumbnails":{
"data":{
"type":"thumbnails",
"id":"dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x"
},
"meta":{
"link":{
"href":"https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x/thumbnail"
}
}
}
}
} ] }
是的,你是对的,不幸的是,上传到 A360 的旧文件不会通过 API 公开 "data" 字段。开发团队正在努力在未来添加此功能,但我无法告诉您何时可以使用,对于坏消息感到抱歉。
下载项目首先要知道你想要哪个版本,然后从
获取objectKey和bucketKey
version.relationships.storage.data.id
这是我的客户端代码:
/////////////////////////////////////////////////////////////////
// Download object from version
//
/////////////////////////////////////////////////////////////////
download (version) {
// retrieves bucketKey/objectKey from storage Id
var objectId = this.parseObjectId(
version.relationships.storage.data.id)
var uri = `${this.apiUrl}/buckets/` +
`${objectId.bucketKey}/objects/${objectId.objectKey}`
var link = document.createElement('a')
link.download = version.attributes.displayName
link.href = uri
link.click()
}
和服务器端(node.js)
//////////////////////////////////////////////////////////////////////
// GET /buckets/:bucketKey/objects/:objectKey
// Download an item version based on { bucketKey, objectKey }
//
/////////////////////////////////////////////////////////////////////
router.get('/buckets/:bucketKey/objects/:objectKey', async (req, res) => {
try {
var bucketKey = req.params.bucketKey
var objectKey = req.params.objectKey
var forgeSvc = ServiceManager.getService(
'ForgeSvc')
var ossSvc = ServiceManager.getService(
'OssSvc')
var token = await forgeSvc.get3LeggedTokenMaster(
req.session)
var object = await ossSvc.getObject(
token.access_token,
bucketKey, objectKey)
res.end(object)
} catch(ex) {
res.status(ex.status || 500)
res.json(ex)
}
})
您可以查看项目的完整源代码there。
希望对您有所帮助
我正在尝试通过 Autodesk Forge 数据管理从 A360 下载文件 API。 documentation 指出 'Items' 或 'Versions' 返回的 JSON 应该有一个名为 'included.relationships.storage.meta.link.href'.
的部分Step 5: Find the versions of an item
If you only want the latest version, you can simply get the link from the response body of the previous step. In the above example, we can see the storage location of House Design.rvt in the included.relationships.storage.meta.link.href attribute (https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/977d69b1-43e7-40fa-8ece-6ec4602892f3.rvt) which can be used to download the item.
但是返回的 JSON 似乎缺少此部分。
即获取项目/:project_id/items/:item_id
使用 Postman
Returns
{ "jsonapi":{
"version":"1.0" }, "links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw"
} }, "data":{
"type":"items",
"id":"urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw",
"attributes":{
"displayName":"Test.dwg",
"createTime":"2015-01-07T12:54:52.0000000Z",
"createUserId":"201007051504283",
"lastModifiedTime":"2015-01-07T12:54:52.0000000Z",
"lastModifiedUserId":"201007051504283",
"extension":{
"type":"items:autodesk.core:File",
"version":"1.0",
"schema":{
"href":"https://developer.api.autodesk.com/schema/v1/versions/items:autodesk.core:File-1.0"
},
"data":{
}
}
},
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw"
}
},
"relationships":{
"tip":{
"data":{
"type":"versions",
"id":"urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw?version=1"
},
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/tip"
}
}
},
"versions":{
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/versions"
}
}
},
"parent":{
"data":{
"type":"folders",
"id":"urn:adsk.wipprod:fs.folder:co.UDepmIWYTSSfbYGIUhngIA"
},
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/parent"
}
}
},
"refs":{
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/relationships/refs"
},
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/refs"
}
}
},
"links":{
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw/relationships/links"
}
}
}
} }, "included":[
{
"type":"versions",
"id":"urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw?version=1",
"attributes":{
"name":"Test.dwg",
"displayName":"Test.dwg",
"createTime":"2015-01-07T12:54:52.0000000Z",
"createUserId":"201007051504283",
"lastModifiedTime":"2015-01-07T12:54:52.0000000Z",
"lastModifiedUserId":"201007051504283",
"versionNumber":1,
"mimeType":"application/vnd.autodesk.autocad.dwg",
"storageSize":438112,
"fileType":"dwg",
"extension":{
"type":"versions:autodesk.core:File",
"version":"1.0",
"schema":{
"href":"https://developer.api.autodesk.com/schema/v1/versions/versions:autodesk.core:File-1.0"
},
"data":{
}
}
},
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1"
}
},
"relationships":{
"item":{
"data":{
"type":"items",
"id":"urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw"
},
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/item"
}
}
},
"links":{
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/relationships/links"
}
}
},
"refs":{
"links":{
"self":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/relationships/refs"
},
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/refs"
}
}
},
"downloadFormats":{
"links":{
"related":{
"href":"https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/versions/urn:adsk.wipprod:fs.file:vf.ZrHUacBXSa2M1C_Xu_vHOw%3Fversion=1/downloadFormats"
}
}
},
"derivatives":{
"data":{
"type":"derivatives",
"id":"dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x"
},
"meta":{
"link":{
"href":"https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x/manifest"
}
}
},
"thumbnails":{
"data":{
"type":"thumbnails",
"id":"dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x"
},
"meta":{
"link":{
"href":"https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sud2lwcHJvZDpmcy5maWxlOnZmLlpySFVhY0JYU2EyTTFDX1h1X3ZIT3c_dmVyc2lvbj0x/thumbnail"
}
}
}
}
} ] }
是的,你是对的,不幸的是,上传到 A360 的旧文件不会通过 API 公开 "data" 字段。开发团队正在努力在未来添加此功能,但我无法告诉您何时可以使用,对于坏消息感到抱歉。
下载项目首先要知道你想要哪个版本,然后从
获取objectKey和bucketKeyversion.relationships.storage.data.id
这是我的客户端代码:
/////////////////////////////////////////////////////////////////
// Download object from version
//
/////////////////////////////////////////////////////////////////
download (version) {
// retrieves bucketKey/objectKey from storage Id
var objectId = this.parseObjectId(
version.relationships.storage.data.id)
var uri = `${this.apiUrl}/buckets/` +
`${objectId.bucketKey}/objects/${objectId.objectKey}`
var link = document.createElement('a')
link.download = version.attributes.displayName
link.href = uri
link.click()
}
和服务器端(node.js)
//////////////////////////////////////////////////////////////////////
// GET /buckets/:bucketKey/objects/:objectKey
// Download an item version based on { bucketKey, objectKey }
//
/////////////////////////////////////////////////////////////////////
router.get('/buckets/:bucketKey/objects/:objectKey', async (req, res) => {
try {
var bucketKey = req.params.bucketKey
var objectKey = req.params.objectKey
var forgeSvc = ServiceManager.getService(
'ForgeSvc')
var ossSvc = ServiceManager.getService(
'OssSvc')
var token = await forgeSvc.get3LeggedTokenMaster(
req.session)
var object = await ossSvc.getObject(
token.access_token,
bucketKey, objectKey)
res.end(object)
} catch(ex) {
res.status(ex.status || 500)
res.json(ex)
}
})
您可以查看项目的完整源代码there。
希望对您有所帮助