callbackBody
适用于在用户开启callbackUrl
设置时,即回调服务器,定制返回给客户端的信息格式。
注:该回调内容经过URLEncode编码,回调服务器接收到回调内容后可进行相关解码
callbackBody支持三种参数方式:常量、自定义替换变量和特殊替换变量,这三种方式可以组合使用。
格式: key1=value1&key2=value2
说明:云存储平台获得这种常量参数后,不做任何处理,将该信息直接回调给callbackUrl
。
范例:
username=john&age=21
格式:$(x:variable)
范例:
callbackBody: position=$(x:position)&message=$(x:message)
若$(x:position)
=abc,$(x:message)
=Success则返回给回调服务器的内容为:
position%3dabc%26message%3dSuccess%0a%0a
注:自定义变量必须是UTF-8格式,且不能含有&,否则会解析为乱码。
格式:$(variable)
范例:
callbackBody: url=$(url)&fsize=$(fsize)&bucket=$(bucket)
url=http://abc.com/1.jpg
fsize=1231341
bucket=test
则返回给回调服务器的内容(做了一次urlencode编码)为:
callbackBody=url%3daHR0cDovL2FiYy5jb20vMS5qcGc%3d%26fisize%3d1231341%26bucket%3dtest%0a
特殊变量 | 描述 | 上传接口 |
---|---|---|
$(persistentId) | 上传预处理或者触发持久化处理的进程ID。 | 普通上传(分片上传受限使用) |
$(bucket) | 获得上传的目标空间名 | 普通上传/分片上传 |
$(key) | 获得文件保存在空间中的资源名 | 普通上传/分片上传 |
$(fname) | 上传的原始文件名 | 普通上传/分片上传 |
$(hash) | 资源的Etag | 普通上传/分片上传 |
$(fsize) | 资源尺寸,单位为字节(Byte) | 普通上传/分片上传 |
$(mimeType) | 资源类型,比如JPG图片的资源类型为image/jpg。 | 普通上传/分片上传 |
$(url) | 访问该资源的实际路径,经过了URL安全的Base64编码 | 普通上传/分片上传 |
$(ip) | 此次请求的来源IP(包括ipv4和ipv6) | 普通上传/分片上传 |
$(costTime) | 服务器接受请求到开始回调回调服务器的时间,单位毫秒。 | 普通上传/分片上传 |
$(avinfo) | 视频元信息,格式为JSON,经过了URL安全的Base64编码 | 普通上传/分片上传 |
$(imageInfo) | 上传图片的基本信息,经过了URL安全的Base64编码 | 普通上传/分片上传 |
$(exif) | 上传图片的exif信息,经过了URL安全的Base64编码 | 普通上传/分片上传 |
$(mimeType) | 资源类型,比如JPG图片的资源类型为image/jpg。 | 普通上传/分片上传 |
在得到回调服务器的响应码和响应内容(必须是JSON格式)后,云存储平台会根据回调服务器的响应码和响应内容,向客户端返回应答。
1.回调服务器的应答为200且返回内容为json串时,云存储给用户端的响应码为200,响应内容为:
{
"hash": "<hash string>",
"response": "<response string>"
}
2.回调服务器应答异常时,云存储给用户端的响应码为579,响应内容为:
{
"hash": "<hash string>",
"error": {
"callbackUrl": "<callbackUrl string>",
"callback_bodyType": "<callback_bodyType string>",
"callback_body": "<callback_body string>",
"token": "<token string>",
"err_code": "<err_code string>",
"error": "<unexpected response>"
}
}
网宿云存储会在回调的请求头中,加入Authorization
字段。
格式:
<Accesskey>:<Urlsafe_Base64_Encode(hmac_sha1(callBackUrlWithQuery+"\n"+urlsafe_base64_encode(callbackBody),SecretKey))>
范例:
d0e56f9f4a75267eba123348f839fbedcd9464c6:OTQzNzU5YWVjOTZlNTRlMWIwYmQzZTA2ZDhjMTFhOWEyNGM1ZjIzZg==
accessKey: d0e56f9f4a75267eba123348f839fbedcd9464c6
secretKey: e145157ad34hu78fb86c8f41bca05673db41bffd
callbackUrlWithQuery: http://www.mycallback.com?source=wcs
callbackBody: url=http://www.mydomain.com/mykey&fsize=1024&bucket=mybucket
Authorization: d0e56f9f4a75267eba123348f839fbedcd9464c6:Urlsafe_Base64_Encode(hmac_sha1('http://www.mycallback.com?source=wcs'+'\n'+Urlsafe_Base64_Encode('url=http://www.mydomain.com/mykey&fsize=1024&bucket=mybucket'),e145157ad34hu78fb86c8f41bca05673db41bffd))
Authorization: d0e56f9f4a75267eba123348f839fbedcd9464c6:YzkwZjIyOGIzMjAzMjBiNDNjMTBjYjBhM2NiZmQ3YWQwYzRmZTIzMA==
上传回调失败时,默认连续重试3次,而后每隔1分钟重试一次(重试5次),共重试8次。
1.如果重试后回调成功,则返回正常的回调应答,状态码为200。
2.如果重试后回调服务器仍无正常响应,则返回异常的回调应答,状态码为579