2017-02-10 56 views
0

我试图通过Autodesk Forge Data Management API从A360下载文件。 documentation指出为'Items'或'Versions'返回的JSON应该有一个名为'included.relationships.storage.meta.link.href'的部分。Autodesk Forge数据管理API下载项目

第5步:查找某一项目

如果你只想要最新版本的版本,你可以简单地获取链接从 上一步骤的响应体。在上面的例子中,我们可以看到 在 included.relationships.storage.meta.link.href属性 (https://developer.api.autodesk.com/oss/v2/buckets/wip.dm.prod/objects/977d69b1-43e7-40fa-8ece-6ec4602892f3.rvt) 可用于下载的项府Design.rvt的存储位置。

但是,返回的JSON似乎有此部分丢失。

GET项目/:PROJECT_ID /项目/:ITEM_ID

使用邮差

https://developer.api.autodesk.com/data/v1/projects/a.YnVzaW5lc3M6ZXhjaXRlY2gxNyMyMDE1MDEwNjc2MzA0MDE/items/urn:adsk.wipprod:dm.lineage:ZrHUacBXSa2M1C_Xu_vHOw

返回

{   "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" 
        } 
       } 
      } 
     } 
     } ] } 
+0

上传了一个新文件后,这似乎有可用的存储数据。所有现有文件在数月内都没有更新,因此没有存储数据。这可能是遗留数据的问题吗? – BassetMan

+0

这是一个传统的迁移,我会仔细检查你的日期。 –

回答

0

是的,你是正确的,不幸的是,上传到A360的旧文件不会通过API暴露“数据”字段。开发团队正在努力在将来添加此功能,但我无法告诉您何时可用,对于这个坏消息抱歉。

你为了下载一个项目所需要的是首先要知道你想要的版本,然后从

version.relationships.storage.data.id 

这里是我的客户端代码获得objectKey和bucketKey:

///////////////////////////////////////////////////////////////// 
// 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) 
    } 
}) 

你可以检查p的完整源代码项目there

希望可以帮到

+0

感谢Philippe,我设法下载了一个没有问题的新上传的文件。但最初只是试图下载现有的内容,没有喜悦。 – BassetMan

+0

是的,不幸的是我不能告诉你什么时候可以这样做......您可以通过以下方式在我们的新博客上继续关注最新的Forge更新:https://forge.autodesk.com/blog –