我要从Autodesk Forge获取该项目的特定版本。我用instruction来做这件事。有一个请求模板:
GET projects/:project_id/versions/:version_id/item
所以我的要求看起来很相似(我为了简洁起见了一部分):
https://developer.api.autodesk.com/data/v1/projects/a.cGV ... TU2/versions/urn:adsk.wipprod:fs.file:vf.lTvo5GGBRzidiQ8Kredbaw?version=1/item
但请求返回错误400 (错误请求)。
当我以相同的方式获得itemin时(当然使用预期的template)一切都没问题。
我应该使用this模板还是其他模板? 我究竟做错了什么?
答案 0 :(得分:2)
由于存在一些保留和不安全的关键字(version_id
,:
,.
和?
,因此应将=
转义为网址安全表单)在这个参数中。它们将使您对Forge服务的请求无效。 (Ref)
例如,您的version_id为urn:adsk.wipprod:fs.file:vf.d34fdsg3g?version=2
,那么您必须将其转换为:
urn%3Aadsk.wipprod%3Afs.file%3Avf.b909RzMKR4mhc3O7UBY_8g%3Fversion%3D2
。
在JavaScript中,encodeURIComponent()
(Ref)函数可以帮助您进行此转换。以下是您的示例:
encodeURIComponent('urn:adsk.wipprod:fs.file:vf.d34fdsg3g?version=2')
如果您的代码是用C#编写的,则可以调用Uri.EscapeDataString()
(Ref)来归档相同的目标。