使用Autodesk API创建文件版本

2024-04-20 15:15:40 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的file upload问题之后,我被文档中的Step 5卡住了。我得到一个400错误,提示我发送的一些数据是不正确的,但我想我已经完全匹配了代码。你知道吗

def create_version_for_file(self, file_name, project_id, folder_id, object_id):
    url = '{}data/v1/projects/{}/items'.format(self.DOMAIN, project_id)
    logger.info('Starting version create at %s for file_name %s, folder %s, object %s',
                url, file_name, folder_id, object_id)
    data = {
        "jsonapi": {"version": "1.0"},
        "data": {
            "type": "items",
            "attributes": {
                "displayName": file_name,
                "extension": {
                    "type": "items:autodesk.core:File",
                    "version": "1.0"
                }
            },
            "relationships": {
                "tip": {
                    "data": {
                        "type": "versions",
                        "id": "1"
                    }
                },
                "parent": {
                    "data": {
                        "type": "folders",
                        "id": folder_id
                    }
                }
            }
        },
        "included": [
            {
                "type": "versions",
                "id": "1",
                "attributes": {
                    "name": file_name,
                    "extension": {
                        "type": "versions:autodesk.core:File",
                        "version": "1.0"
                    }
                },
                "relationships": {
                    "storage": {
                        "data": {
                            "type": "objects",
                            "id": object_id
                        }
                    }
                }
            }
        ]
    }
    response = self.session.post(url, json=data, headers={
        'content-type': 'application/vnd.api+json',
        'accept': 'application/vnd.api+json'
    })
    if response.status_code != status.HTTP_201_CREATED:
        logger.warn('Version create for %s failed with status %s: %s', file_name, response.status_code,
                    response.content)
        return None
    return json.loads(response.content)

但是,请求总是失败,如下所示:

Upload succeeded for README.md 2017-10-12 16:53:15,943 
Starting version create at https://developer.api.autodesk.com/data/v1/projects/b.f19577f2-c4da-428f-9625-bb53bf434cca/items for file_name README.md, folder urn:adsk.wipprod:fs.folder:co.Hx1ePxPtS1e0P-Ib9qudyQ, object urn:adsk.objects:os.object:3a06e38e-4cac-4ffc-981f-0e5c4e4078aab.f19577f2-c4da-428f-9625-bb53bf434cca/d14c3591-d339-4e62-907c-6f0c8b58b743.md
Version create for README.md failed with status 400: {"jsonapi":{"version":"1.0"},"errors":[{"id":"bfbf0a93-c92a-47af-9ce7-a6af48594e44","status":"400","code":"BAD_INPUT","title":"One or more input values in the request were bad","detail":"Request input is invalid for this operation."}]}

在上面的日志中,所有变量的示例值都位于右侧。你知道吗


Tags: nameidjsonfordataobjectversionresponse
2条回答

从这个forum responsethe tutorial已经过时了,你应该用autodesk.bim360:File(而不是像排版建议的autodedsk.bim360:File)来代替autodesk.core:File。最近有一个example here.。你知道吗

它仍然不起作用,但至少我的错误转移到了The urn must be an unassigned urn prepared by the create storage endpoint, by the same user.

这可能是正确的设置,但可能您的存储位置创建在不正确的文件夹中。根据我在论坛帖子中建议的教程,您需要向下导航一级,以避免在bim360文档的根文件夹上创建存储位置。试着回到你的步骤,按照教程中的建议做。专注于第四步

  1. 授权Web流(这将返回获取oauth令牌所需的代码)

  2. Rest调用验证API以获取3腿令牌GET调用以获取我们在BIM 360文档中可以访问哪些集线器的详细信息(注册BIM 360 API访问所需的应用程序)

  3. 获取呼叫以查找包含您的资源的项目

  4. GET call查找将进行上载的文件夹(平面图、项目文件、图形)。你知道吗

    4.1额外步骤可以包括访问子文件夹。

  5. POST call在先前定义的文件夹中创建存储位置

  6. 调用PUT将文件上载到存储位置

  7. POST调用创建上载文件的第一个版本。

查看BIM 360文档以查看最近上载的文件。你知道吗

相关问题 更多 >