如何形成"GET :urn/manifest/:derivativeurn"请求?

How to form a "GET :urn/manifest/:derivativeurn" request?

我不知道如何从 Forge 下载创建的衍生产品。

这是我从 "GET :urn/manifest" 请求中得到的:

{
"type": "manifest",
"hasThumbnail": "false",
"status": "success",
"progress": "complete",
"region": "US",
"urn": "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZGVyaXZhdGV0bXAvU3QlQzMlQTRuZGVyX1lfT2JlbiUyMHYxLmYzZA",
"version": "1.0",
"derivatives": [
    {
        "name": "Ständer_Y_Oben v1.f3d",
        "hasThumbnail": "false",
        "status": "success",
        "progress": "complete",
        "outputType": "obj",
        "children": [
            {
                "guid": "4064073b-a56c-4007-8b87-3cf87c821361",
                "type": "resource",
                "role": "obj",
                "status": "success",
                "progress": "complete",
                "mime": "application/octet-stream",
                "urn": "urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZGVyaXZhdGV0bXAvU3QlQzMlQTRuZGVyX1lfT2JlbiUyMHYxLmYzZA/output/files/6f7db9b2-925f-44b3-92e8-a5aeeb3954d2/Ständer_Y_Oben v1.obj"
            }
        ]
    }
]

那么如何形成有效的 "GET :urn/manifest/:derivativeurn" 请求呢?文档说 "urn should be The Base64 (URL Safe) encoded design URN" 和 "derivativeurn should be The URL-encoded URN of the derivatives.".

对我来说,这会导致: https://developer.api.autodesk.com/modelderivative/v2/designdata/dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZGVyaXZhdGV0bXAvU3QlQzMlQTRuZGVyX1lfT2JlbiUyMHYxLmYzZA/manifest/urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZGVyaXZhdGV0bXAvU3QlQzMlQTRuZGVyX1lfT2JlbiUyMHYxLmYzZA/output/files/6f7db9b2-925f-44b3-92e8-a5aeeb3954d2/St%C3%A4nder_Y_Oben%20v1.obj

但结果总是消息 "The requested derivative is not belongs to the design data."。

所以怎么了?文档还是我?

此致, 迈克尔

根据 GET :urn/manifest/:derivativeurn, the derivativeurn should be escaped into a URL safe form since there are some reserved and unsafe keywords ( i.e. :, ., ? and = ) in this parameter. They will invalid your request to the Forge service. (Ref)

的文档

您的档案盒是: urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZGVyaXZhdGV0bXAvU3QlQzMlQTRuZGVyX1lfT2JlbiUyMHYxLmYzZA/output/files/6f7db9b2-925f-44b3-92e8-a5aeeb3954d2/Ständer_Y_Oben v1.obj

要下载此文件,您必须将其转换为这种形式:urn%3Aadsk.viewing%3Afs.file%3AdXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZGVyaXZhdGV0bXAvU3QlQzMlQTRuZGVyX1lfT2JlbiUyMHYxLmYzZA%2Foutput%2Ffiles%2F6f7db9b2-925f-44b3-92e8-a5aeeb3954d2%2FSt%C3%A4nder_Y_Oben%20v1.obj


在JavaScript中,encodeURIComponent()(Ref)函数可以帮你做这个转换。这是给您的示例:

encodeURIComponent('urn:adsk.viewing:fs.file:dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZGVyaXZhdGV0bXAvU3QlQzMlQTRuZGVyX1lfT2JlbiUyMHYxLmYzZA/output/files/6f7db9b2-925f-44b3-92e8-a5aeeb3954d2/Ständer_Y_Oben v1.obj')

如果您使用 C# 编写代码,Uri.EscapeDataString() (Ref) 可以帮助您实现相同的目标。