据我所知,可以使用curl发出POST和PATCH请求;
POST:https://gist.github.com/subfuzion/08c5d85437d5d4f00e58
匹配:How to use PATCH verb with curl
Vimeo API支持POST和PATCH请求以上传视频;
https://developer.vimeo.com/api/upload/videos
到目前为止,这是我最好的猜测;
curl --request --url https://api.vimeo.com/me/videos \
--header 'Authorization: bearer {access_token}' \
--header 'Content-Type: application/json' \
--header 'Accept: application/vnd.vimeo.*+json;version=3.4' \
--data '{ "upload": { "approach": "tus", "size": "{size}" }}'
我怀疑这充满了错误,并且也没有显示如何上传带有PATCH请求的视频。
正确的curl命令是什么样的?
答案 0 :(得分:2)
对于使用Vimeo API上传tus,这是一个多步骤过程:
步骤1是对/me/videos
的POST请求。如果操作正确,您将收到完整的视频回复,其中包含一个"upload"
的{{1}}对象。将"upload_link"
的值用于步骤2。
(请注意,upload_link
应该位于Vimeo的“ tus”子域上,例如upload_link
。如果您在不同的Vimeo子域上获得了files.tus.vimeo.com
,则您的出问题了请求,并且该API默认使用其他上传方法。您还可以通过检查嵌套在upload_link
对象中的upload_link
值来验证是否返回了图斯approach
,它应该返回“ tus”。)
在您的示例中,upload
缺少--request
动词/动作。步骤1应该看起来像这样(还要注意,POST
,-request
和-header
与-data
,-X
和-H
可以互换,分别):
-d
第2步是实际的文件上传,是对从第1步返回的curl -X POST https://api.vimeo.com/me/videos \
-H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
-H 'Authorization: bearer XXXXXXXXX' \
-H 'Content-Type: application/json' \
-d '{"upload":{"approach":"tus","size":"999999"}}'
的PATCH,请求主体包含视频文件的原始二进制数据:
upload_link
第3步是对同一curl --request PATCH upload_link \
-H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
-H 'Content-Type: application/offset+octet-stream' \
-H 'Tus-Resumable: 1.0.0' \
-H 'Upload-Offset: 0' \
--data-binary /path/to/file.ext
的HEAD请求,没有文件数据:
upload_link
根据返回的curl --request HEAD upload_link \
-H 'Accept: application/vnd.vimeo.*+json;version=3.4' \
-H 'Tus-Resumable: 1.0.0' \
和upload-length
标头,您可能需要重复步骤2,从Vimeo服务器上的最后一个字节恢复上传。
有关Vimeo的tus上传实现的文档,请参见:https://developer.vimeo.com/api/upload/videos#resumable-approach
希望这会为您指明正确的方向!