我要从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 (请求错误)。
当我以同样的方式获取项目时(使用 template 当然)一切正常。
我应该使用 this 模板或其他? 我做错了什么?
这个 version_id 应转义为URL安全的形式,因为存在一些保留的和不安全的关键字(即。 : , . , ? 和 = )在此参数中。他们将使您对Forge服务的请求无效。( Ref )
version_id
:
.
?
=
例如,您的version\u id为 urn:adsk.wipprod:fs.file:vf.d34fdsg3g?version=2 ,则必须将其转换为:
urn:adsk.wipprod:fs.file:vf.d34fdsg3g?version=2
urn%3Aadsk.wipprod%3Afs.file%3Avf.b909RzMKR4mhc3O7UBY_8g%3Fversion%3D2 .
urn%3Aadsk.wipprod%3Afs.file%3Avf.b909RzMKR4mhc3O7UBY_8g%3Fversion%3D2
在JavaScript中 encodeURIComponent() ( Ref )函数可以帮助您进行此转换。以下是一个示例:
encodeURIComponent()
encodeURIComponent('urn:adsk.wipprod:fs.file:vf.d34fdsg3g?version=2')
如果代码是用C#编写的,则可以调用 Uri.EscapeDataString() ( Ref )归档相同的目标。
Uri.EscapeDataString()