回调方式数据说明

描述

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