更新时间:2024-10-21 gmt 08:00

回调-九游平台

功能介绍

用户可以在上传对象请求中设置回调参数,obs在对象上传成功之后,将上传结果回调特定服务器,并将回调结果返回给用户。

目前只在post上传对象、put上传对象以及多段操作中的合并段api中支持回调功能。

在对象上传成功之后才会回调特定服务器,如果对象上传失败则不会回调。

回调成功,返回回调结果给客户端,同时将上传对象的etag以头域返回,当回调结果也包含etag时,将对etag拼接后返回。

回调失败,返回203,表示对象上传成功但是回调失败。

如果上传的图片大小超过25m,则无法通过imageinfo相关魔法变量获取图片基本信息,会导致回调失败。

post上传对象api中,回调参数可以在表单中携带,也可以在policy中携带。两者只能选择其一。

如果在表单中携带,每个回调参数都需要增加一个表单元素,回调参数可以不做条件校验,即不需要在policy的conditions中增加回调参数。这种方式支持在回调消息体中使用用户自定义变量,自定义变量通过“x:”前缀携带。

如果通过policy携带,则不需要增加表单元素。但是不支持用户自定义变量,仅能使用系统变量。

通过表单携带的回调参数如表1所示。

表1 表单回调参数

参数名称

描述

是否必选

callbackurl

对象上传成功之后,obs向此url发送回调请求,请求方法为post。

支持设置多个url,以英文分号(;)分隔,最多支持10个。

callbackurl需要做url编码。例如:“http://www.example.com/中文?key=中文名”需要编码成“http://www.example.com/中文?key=中文名”。

类型:string

callbackhost

发起回调请求的host头域的值,如果不设置,会使用callbackurl解析出来的host。

类型:string

callbackbody

发起回调请求的body体。body体格式必须符合callbackbodytype中设置的媒体类型。

回调body体支持系统变量和自定义变量,系统变量如表3所示,自定义变量就是以x:开头的变量。例如:key=$(key)&hash=$(etag)&fileid=$(x:fileid),其中变量key、etag是系统变量,x:fileid是自定义变量。如果用户上传的对象是图片,可以在参数中设置imageinfo.width和imageinfo.height表示该图片的宽高。例如:key=$(key)&hash=$(etag)&w=$(imageinfo.width)&h=$(imageinfo.height)。

类型:string

callbackbodytype

发起回调请求的content-type头域的值。支持application/x-www-form-urlencoded、application/json。如果不设置,默认为

application/json。

类型:string

x:*

用户自定义变量,必须以 x: 开头。

通过policy携带的回调参数如表2所示。

表2 policy回调参数

参数名称

描述

是否必选

url

对象上传成功之后,obs向此url发送回调请求,请求方法为post。

支持设置多个url,以英文分号(;)分隔,最多支持10个。

url需要做url编码。例如:“http://www.example.com/中文?key=中文名”需要编码成“http://www.example.com/中文?key=中文名”。

类型:string

host

发起回调请求的host头域的值,如果不设置,会使用url解析出来的host。

类型:string

body

发起回调请求的body体。body体格式必须符合body-type中设置的媒体类型。

body的内容必须经过url安全base64编码。

回调body体支持使用系统变量,系统变量如表3所示。例如:key=$(key)&hash=$(etag),其中变量key、etag是系统变量,则body参数为:a2v5psqoa2v5kszoyxnopsqozxrhzyk=,是key=$(key)&hash=$(etag)的base64编码。如果用户上传的对象是图片,可以在参数中设置imageinfo.width和imageinfo.height表示该图片的宽高。例如:key=$(key)&hash=$(etag)&w=$(imageinfo.width)&h=$(imageinfo.height),body参数为:a2v5psqoa2v5kszoyxnopsqozxrhzykmdz0kkgltywdlsw5mby53awr0ackmad0kkgltywdlsw5mby5ozwlnahqp

类型:string

body-type

发起回调请求的content-type头域的值。支持application/x-www-form-urlencoded、application/json。如果不设置,默认为

application/json。

类型:string

表3 回调body体支持的系统变量

变量名称

参数类型

描述

fname

string

上传的原始文件名。

fsize

string

文件的大小,单位为字节。

名称兼容size。

etag

string

对象的etag。

bucket

string

上传的对象所属桶名。

key

string

上传的对象名。

ext

string

上传文件的后缀名,通过自动检测的mimetype或者$(fname)的后缀来获取。

名称兼容mimetype。

override

string

上传对象是否产生覆盖,值只会是true或false。

上传对象的对象名在桶中已存在,即会产生覆盖,override为true,否则为false。当桶开启多版本时,不会产生覆盖写,override始终为false。

imageinfo

string

获取所上传图片的基本信息。只支持上传图片的场景。

该变量包含$(imageinfo.width)和$(imageinfo.height)两个子字段,分别表示图片的宽度和高度。

说明:

如果上传的图片大小超过25m,则无法通过imageinfo相关魔法变量获取图片基本信息,会导致回调失败。

put上传对象以及合并段api中,回调参数可以通过头域x-obs-callback或者请求参数x-obs-callback携带,二者只能选择其一。二者共存时,只有头域x-obs-callback携带的回调参数生效,携带的回调策略必须为经过base64编码的json字符串,该json字符串中能够携带的回调参数同表1,但是暂不支持自定义变量,回调body体支持的系统变量同表3

put上传对象以及合并段api中,使用回调时,与post上传对象使用回调主要有以下几点不同:

  1. 回调参数是通过头域x-obs-callback或者请求参数x-obs-callback携带,携带的回调策略必须是经过base64编码的json字符串,否则obs将返回400,invalid base64 encoding,对象上传失败。
  2. callbackurl未配置或者配置为空时,视为未配置回调策略,对象仍正常上传,不执行回调。
  3. 不支持自定义变量。
json回调策略正确示例1:
{
"callbackurl":"http://www.example.com/callback",
"callbackbody": "{\"bucket\":\"$(bucket)\",\"key\":\"$(key)\",\"override\":\"$(override)\"}",
"callbackbodytype":"application/json"
}

json回调策略正确示例2:

{
"callbackurl":"http://www.example.com/callback1;http://www.example.com/callback2",
"callbackbody":"bucket=$(bucket)&key=$(key)&override=$(override)"
}

请求消息样式

通过表单携带回调参数的请求消息样式与post上传对象相同,参考post上传。policy的内容包含失效时间和条件元素,参考基于浏览器上传的表单中携带签名

通过policy携带回调参数的policy如下所示,比普通的policy增加了回调参数“callback”。请求消息样式与post上传对象相同,参考post上传

{ "expiration": "2017-12-31t12:00:00.000z",
  "conditions": [
    {"x-obs-acl": "public-read" },
    {"x-obs-security-token": "ywkartbdy8g7q...." },
    {"bucket": "book" },
    ["starts-with", "$key", "user/"]
  ],
  "callback": [
    {"url": "http://www.example.com/callback" },
    {"host": "www.example.com" },
    {"body": "eyjrzxkioiikkgtleskilcjoyxnoijoijchldgfnksj9"},
    {"body-type": "application/json"}
  ]
}

在put上传对象和合并段api中,首先按照上文所述,构造json回调策略字符串,随后使用base64对其编码后,通过头域x-obs-callback或者请求参数x-obs-callback携带即可。

obs在计算canonicalizedheaders和canonicalizedresource时,会分别将头域x-obs-callback以及请求参数x-obs-callback纳入签名计算的范围,参考obs签名机制概述

响应消息样式

1
2
3
4
5
6
7
http/1.1status_code
content-type:type
server:obs
date:date
x-obs-request-id:request-id
content-length:length
etag:etag

在合并段api中,不使用回调功能时,响应消息body体中为合并段的结果(xml格式),参考,当使用回调功能时,响应消息body体中为回调服务器返回的响应消息body体的内容,例如{"status":"success"}

返回码

带回调参数的post上传对象的返回码与普通post上传对象不同。普通post上传对象http状态码是“204 no content”。带回调参数的post上传对象、put上传对象以及合并段返回结果是回调结果,如果回调成功,一般会返回“200 ok”,如果回调失败,会返回203。

表4 回调请求返回码

http状态码

说明

200 ok

上传对象成功,并且回调成功。

203 non authoritative information

上传对象成功,但是回调失败。

请求示例

下面的几张表提供了一些回调请求的示例。

表5 通过policy携带回调参数

请求

说明

post / http/1.1
host: examplebucket.obs.cn-north-4.myhuaweicloud.com
content-type: multipart/form-data; boundary=---------------------------7e329d630b26
content-length: 1597
-----------------------------7e32de17c166a
content-disposition: form-data; name="key"
file/obj1
-----------------------------7e32de17c166a
content-disposition: form-data; name="accesskeyid"
uynvcm2jjes4apb9fzug
-----------------------------7e32de17c166a
content-disposition: form-data; name="policy"
ewogicjlehbpcmf0aw9uijogijiwmjatmtatmdfumti6mda6mdaumdawwiisciagimnvbmrpdglvbnmioibbciagicb7imj1y2tldci6icjlegftcgxlynvja2v0in0sciagicbbimvxiiwgiirrzxkilcaizmlszs9vymoxil0kicbdlaogicjjywxsymfjayi6ifskicagihsidxjsijogimh0dha6ly93d3cuzxhhbxbszs5jb20vy2fsbgjhy2sifswkicagihsiym9kesi6icjleupywlhrau9pswtlr3rszvnrauxdsm9zwe5vswpvaupdagxkr0zus1nkosj9laogicageyjib2r5lxr5cguioiaiyxbwbgljyxrpb24vannvbij9ciagicbdcn0
-----------------------------7e32de17c166a
content-disposition: form-data; name="signature"
w0nw7iic4wfav9sxku/nisi99e8=
-----------------------------7e32de17c166a
content-disposition: form-data; name="file"; filename="e:\test_file\test.txt"
content-type: text/plain
123456
---------------------------7e32de17c166a
content-disposition: form-data; name="submit"
upload
-----------------------------7e32de17c166a--

其中policy为:

{
"expiration": "2020-10-01t12:00:00.000z",
"conditions": [
{"bucket": "examplebucket"},
["eq", "$key", "file/obj1"]
],
"callback": [
{"url": "http://www.example.com/callback"},
{"body": "eyjrzxkioiikkgtleskilcjoyxnoijoijchldgfnksj9"},
{"body-type": "application/json"}
]
}

回调body为:

{"key":"$(key)","hash":"$(etag)"}

其中系统变量key=file/obj1,etag=f447b20a7fcbf53a5d5be013ea0b15af,最终回调的消息体是:

{"key":"file/obj1","hash":"f447b20a7fcbf53a5d5be013ea0b15af"}
表6 通过表单携带回调参数,回调请求中只使用系统变量

请求

说明

post / http/1.1
host: examplebucket.obs.cn-north-4.myhuaweicloud.com
content-type: multipart/form-data; boundary=---------------------------7e329d630b26
content-length: 1597
-----------------------------7e32de17c166a
content-disposition: form-data; name="key"
file/obj1
-----------------------------7e32de17c166a
content-disposition: form-data; name="accesskeyid"
uynvcm2jjes4apb9fzug
-----------------------------7e32de17c166a
content-disposition: form-data; name="policy"
ewogicjlehbpcmf0aw9uijogijiwmjatmtatmdfumti6mda6mdaumdawwiisciagimnvbmrpdglvbnmioibbciagicb7imj1y2tldci6icjlegftcgxlynvja2v0in0sciagicbbimvxiiwgiirrzxkilcaizmlszs9vymoxil0kicbdcn0
-----------------------------7e32de17c166a
content-disposition: form-data; name="signature"
w0nw7iic4wfav9sxku/nisi99e8=
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackurl"
http://my.callback.com:8080/api/callback
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackbody"
key=$(key)&hash=$(etag)&fname=$(fname)&fsize=$(size)
-----------------------------7e32de17c166a
content-disposition: form-data; name="file"; filename="e:\test_file\test.txt"
content-type: text/plain
123456
---------------------------7e32de17c166a
content-disposition: form-data; name="submit"
upload
-----------------------------7e32de17c166a--

其中policy为:

{
"expiration": "2020-10-01t12:00:00.000z",
"conditions": [
{"bucket": "examplebucket"},
["eq", "$key", "file/obj1"]
]
}

policy中可以不包含callbackurl和callbackbody这两个回调参数。bucket、key为必须包含的表单元素。

回调body为:

key=$(key)&hash=$(etag)&fname=$(fname)&fsize=$(size)

其中系统变量key=file/obj1,etag=f447b20a7fcbf53a5d5be013ea0b15af,fname=e:\test_file\test.txt,fsize=7。

最终回调的消息体是:

key=file/obj1&hash=f447b20a7fcbf53a5d5be013ea0b15af&fname=e:\test_file\test.txt&fsize=7
表7 通过表单携带回调参数,回调请求中使用系统变量和自定义变量,同时设置自定义元数据

请求

说明

post / http/1.1
host: examplebucket.obs.cn-north-4.myhuaweicloud.com
content-type: multipart/form-data; boundary=---------------------------7e329d630b26
content-length: 1597
-----------------------------7e32de17c166a
content-disposition: form-data; name="key"
file/obj1
-----------------------------7e32de17c166a
content-disposition: form-data; name="accesskeyid"
uynvcm2jjes4apb9fzug
-----------------------------7e32de17c166a
content-disposition: form-data; name="policy"
ewogicjlehbpcmf0aw9uijogijiwmjatmtatmdfumti6mda6mdaumdawwiisciagimnvbmrpdglvbnmioibbciagicb7imj1y2tldci6icjlegftcgxlynvja2v0in0sciagicbbimvxiiwgiirrzxkilcaizmlszs9vymoxil0scgl7ingtb2jzlw1ldgetdgvzddeioij2ywx1zteifqogif0kfq
-----------------------------7e32de17c166a
content-disposition: form-data; name="signature"
w0nw7iic4wfav9sxku/nisi99e8=
-----------------------------7e32de17c166a
content-disposition: form-data; name="x-obs-meta-test1"
value1
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackurl"
http://my.callback.com:8080/api/callback
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackbody"
{"bucketname": "$(bucket)","key": "$(key)","hash": "$(etag)","id": "$(x:id)","createtime": "$(x:time)"}
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackhost"
my.callback.com
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackbodytype"
application/json
-----------------------------7e32de17c166a
content-disposition: form-data; name="x:id"
test-example-id
-----------------------------7e32de17c166a
content-disposition: form-data; name="x:time"
2019-12-06 18:01:34
-----------------------------7e32de17c166a
content-disposition: form-data; name="file"; filename="e:\test_file\test.txt"
content-type: text/plain
123456
---------------------------7e32de17c166a
content-disposition: form-data; name="submit"
upload
-----------------------------7e32de17c166a--

其中policy为:

{
"expiration": "2020-10-01t12:00:00.000z",
"conditions": [
{"bucket": "examplebucket"},
["eq", "$key", "file/obj1"],
{"x-obs-meta-test1":"value1"}
]
}

policy中可以不包含callbackurl、callbackbody、callbackhost、callbackbodytype、x:id、x:time这六个回调参数。bucket、key、x-obs-meta-test1为必须包含的表单元素。

回调body为:

{"bucketname": "$(bucket)","key": "$(key)","hash": "$(etag)","id": "$(x:id)","createtime": "$(x:time)"}

其中系统变量bucket=examplebucket,key=file/obj1,etag=f447b20a7fcbf53a5d5be013ea0b15af,自定义变量x:id=test-example-id,x:time=2019-12-06 18:01:34。

最终回调的json消息体是:

{"bucketname": "examplebucket","key": "file/obj1","hash": "f447b20a7fcbf53a5d5be013ea0b15af","id": "test-example-id","createtime": "2019-12-06 18:01:34"}
表8 通过表单携带回调参数,并且校验部分回调参数

请求

说明

post / http/1.1
host: examplebucket.obs.cn-north-4.myhuaweicloud.com
content-type: multipart/form-data; boundary=---------------------------7e329d630b26
content-length: 1597
-----------------------------7e32de17c166a
content-disposition: form-data; name="key"
file/obj1
-----------------------------7e32de17c166a
content-disposition: form-data; name="accesskeyid"
uynvcm2jjes4apb9fzug
-----------------------------7e32de17c166a
content-disposition: form-data; name="policy"
eyjlehbpcmf0aw9uijogijiwmjatmtatmdfumti6mda6mdaumdawwiisimnvbmrpdglvbnmioibbeyjidwnrzxqioiaizxhhbxbszwj1y2tldcj9lfsizxeilcaijgtlesisicjmawxll29iajeixsx7ingtb2jzlw1ldgetdgvzddeioij2ywx1zteifsx7imnhbgxiywnrvxjsijoiahr0cdovl215lmnhbgxiywnrlmnvbto4mdgwl2fwas9jywxsymfjayj9lhsiy2fsbgjhy2tcb2r5ijoie1wiynvja2v0tmftzvwioiakkgj1y2tldcksxcjrzxlcijogjchrzxkplfwiagfzafwioiakkgv0ywcplfwiawrcijogjht4omlkfsxcimnyzwf0zxrpbwvcijogjht4onrpbwv9fsj9lhsiedp0aw1lijoimjaxos0xmi0wniaxodowmtozncj9xx0
-----------------------------7e32de17c166a
content-disposition: form-data; name="signature"
w0nw7iic4wfav9sxku/nisi99e8=
-----------------------------7e32de17c166a
content-disposition: form-data; name="x-obs-meta-test1"
value1
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackurl"
http://my.callback.com:8080/api/callback
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackbody"
{"bucketname": $(bucket),"key": $(key),"hash": $(etag),"id": $(x:id),"createtime": $(x:time)}
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackhost"
my.callback.com
-----------------------------7e32de17c166a
content-disposition: form-data; name="callbackbodytype"
application/json
-----------------------------7e32de17c166a
content-disposition: form-data; name="x:id"
test-example-id
-----------------------------7e32de17c166a
content-disposition: form-data; name="x:time"
2019-12-06 18:01:34
-----------------------------7e32de17c166a
content-disposition: form-data; name="file"; filename="e:\test_file\test.txt"
content-type: text/plain
123456
---------------------------7e32de17c166a
content-disposition: form-data; name="submit"
upload
-----------------------------7e32de17c166a--

其中policy为:

{
"expiration": "2020-10-01t12:00:00.000z",
"conditions": [
{"bucket": "examplebucket"},
["eq", "$key", "file/obj1"],
{"x-obs-meta-test1":"value1"},
{"callbackurl":"http://my.callback.com:8080/api/callback"},
{"callbackbody":"{\"bucketname\": $(bucket),\"key\": $(key),\"hash\": $(etag),\"id\": $(x:id),\"createtime\": $(x:time)}"},
{"x:time":"2019-12-06 18:01:34"}
]
}

policy中包含了callbackurl、callbackbody、x:time这三个回调参数,会对这三个参数做条件校验,没有包含callbackhost、callbackbodytype、x:id这三个回调参数,不对这三个参数做条件校验。

policy中可以不包含回调参数,也可以包含部分/全部回调参数。

bucket、key、x-obs-meta-test1为必须包含的表单元素。

回调body为:

{"bucketname": $(bucket),"key": $(key),"hash": $(etag),"id": $(x:id),"createtime": $(x:time)}

其中系统变量bucket=examplebucket,key=file/obj1,etag=f447b20a7fcbf53a5d5be013ea0b15af,自定义变量x:id=test-example-id,x:time=2019-12-06 18:01:34。

最终回调的json消息体是:

{"bucketname": "examplebucket","key": "file/obj1","hash": "f447b20a7fcbf53a5d5be013ea0b15af","id": "test-example-id","createtime": "2019-12-06 18:01:34"}
表9 在put上传对象api中,通过请求参数x-obs-callback携带回调策略

请求

说明

put /example.txt?x-obs-callback=eyjjywxsymfja0jvzhkioiaie1wib2jqzwn0tmftzvwioibciiqoa2v5kvwilcbcimj1y2tldfwioibciiqoynvja2v0kvwilcbcimv4dfwioibciiqozxh0kvwilcbcimv0ywdcijogxcikkgv0ywcpxcisifwib3zlcnjpzgvcijogxcikkg92zxjyawrlkvwilcbcinnpemvcijogxcikkhnpemupxcj9iiwgimnhbgxiywnrvxjsijogimh0dha6ly93d3cuzxhhbxbszs5jb20vy2fsbgjhy2sifq== http/1.1
user-agent: curl/7.29.0
host: examplebucket.obs.cn-north-4.myhuaweicloud.com
accept: */*
date: wed, 14 oct 2020 04:11:15 gmt
authorization: obs h4ipjx0tqththebqqcec:gyqpllq30dex7gmi2qfwyjdfsyw=
content-length: 1024
expect: 100-continue
[1024 byte data content]

其中回调策略json字符串为:

{"callbackbody": "{\"objectname\": \"$(key)\", \"bucket\": \"$(bucket)\", \"ext\": \"$(ext)\", \"etag\": \"$(etag)\", \"override\": \"$(override)\", \"size\": \"$(size)\"}", "callbackurl": "http://www.example.com/callback"}

在回调策略中包含了callbackurl和callbackbody两个回调参数,该回调策略json字符串经过base64编码之后即为:eyjjywxsymfja0jvzhkioiaie1wib2jqzwn0tmftzvwioibciiqoa2v5kvwilcbcimj1y2tldfwioibciiqoynvja2v0kvwilcbcimv4dfwioibciiqozxh0kvwilcbcimv0ywdcijogxcikkgv0ywcpxcisifwib3zlcnjpzgvcijogxcikkg92zxjyawrlkvwilcbcinnpemvcijogxcikkhnpemupxcj9iiwgimnhbgxiywnrvxjsijogimh0dha6ly93d3cuzxhhbxbszs5jb20vy2fsbgjhy2sifq==

最后通过请求参数x-obs-callback携带。

如果该桶中不存在对象名为example.txt的对象,则最终回调消息体是:

{"objectname":"example.txt","bucket":"examplebucket","ext":"txt","etag":"f447b20a7fcbf53a5d5be013ea0b15af","override":"false","size":"1024"}
表10 在put上传对象api中,通过头域x-obs-callback携带回调策略

请求

说明

put /example.txt? http/1.1
user-agent: curl/7.29.0
host: examplebucket.obs.cn-north-4.myhuaweicloud.com
accept: */*
date: wed, 14 oct 2020 04:11:15 gmt
authorization: obs h4ipjx0tqththebqqcec:gyqpllq30dex7gmi2qfwyjdfsyw=
x-obs-callback: eyjjywxsymfja0jvzhkioiaia2v5psqoa2v5kszvdmvycmlkzt0kkg92zxjyawrlksisicjjywxsymfja1vybci6icjodhrwoi8vd3d3lmv4yw1wbguuy29tl2nhbgxiywnrmttodhrwoi8vd3d3lmv4yw1wbguuy29tl2nhbgxiywnrmij9
content-length: 1024
expect: 100-continue
[1024 byte data content]

其中回调策略json字符串为:

{"callbackbody": "key=$(key)&override=$(override)", "callbackurl": "http://www.example.com/callback1;http://www.example.com/callback2"}

在回调策略中包含了callbackurl和callbackbody两个回调参数,该回调策略json字符串经过base64编码之后即为:eyjjywxsymfja0jvzhkioiaia2v5psqoa2v5kszvdmvycmlkzt0kkg92zxjyawrlksisicjjywxsymfja1vybci6icjodhrwoi8vd3d3lmv4yw1wbguuy29tl2nhbgxiywnrmttodhrwoi8vd3d3lmv4yw1wbguuy29tl2nhbgxiywnrmij9

最后通过头域x-obs-callback携带。

如果example.txt对象名在该桶中已经存在,那么最终回调消息体为:

key=example.txt&override=true
表11 在合并段api中,通过头域x-obs-callback携带回调策略

请求

说明

post /example.txt?uploadid=00000163d46218698df407362295674c http/1.1
user-agent: curl/7.29.0
host: examplebucket.obs.cn-north-4.myhuaweicloud.com
accept: */*
date: wed, 14 oct 2020 04:11:15 gmt
authorization: obs h4ipjx0tqththebqqcec:dofk9iilckxo58trp3fwedoyzka=
x-obs-callback: eyjjywxsymfja0jvzhkioiaie1wiagfzafwioibciiqozxrhzylciiwgxcjrzxlcijogxcikkgtleslcin0ilcaiy2fsbgjhy2tvcmwioiaiahr0cdovl3d3dy5legftcgxllmnvbs9jywxsymfjayj9
content-length: 422



1
a54357aff0632cce46d942af68356b38


2
0c78aef83f66abc1fa1e8477f296d394


3
acbd18db4cc2f85cedef654fccc4a4d8

其中回调策略json字符串为:

{"callbackbody": "{\"hash\": \"$(etag)\", \"key\": \"$(key)\"}", "callbackurl": "http://www.example.com/callback"}

在回调策略中包含了callbackurl和callbackbody两个回调参数,该回调策略json字符串经过base64编码之后即为:

eyjjywxsymfja0jvzhkioiaie1wiagfzafwioibciiqozxrhzylciiwgxcjrzxlcijogxcikkgtleslcin0ilcaiy2fsbgjhy2tvcmwioiaiahr0cdovl3d3dy5legftcgxllmnvbs9jywxsymfjayj9

最后通过头域x-obs-callback携带。

最终回调消息体为:

{"hash":"aa2a0304e377796ad5f9793f237f22a1-3","key":"example.txt"}
表12 在合并段api中,通过请求参数x-obs-callback携带回调策略

请求

说明

post /example.txt?uploadid=00000163d46218698df407362295674c&x-obs-callback=eyjjywxsymfja0jvzhkioiaib3zlcnjpzgu9jchvdmvycmlkzskmznnpemu9jchmc2l6zskilcaiy2fsbgjhy2tvcmwioiaiahr0cdovl3d3dy5legftcgxllmnvbs9jywxsymfjaze7ahr0cdovl3d3dy5legftcgxllmnvbs9jywxsymfjmjtodhrwoi8vd3d3lmv4yw1wbguuy29tl2nhbgxiywnrmyj9 http/1.1
user-agent: curl/7.29.0
host: examplebucket.obs.cn-north-4.myhuaweicloud.com
accept: */*
date: wed, 14 oct 2020 04:11:15 gmt
authorization: obs h4ipjx0tqththebqqcec:dofk9iilckxo58trp3fwedoyzka=
content-length: 422



1
a54357aff0632cce46d942af68356b38


2
0c78aef83f66abc1fa1e8477f296d394


3
acbd18db4cc2f85cedef654fccc4a4d8

其中回调策略json字符串为:

{"callbackbody": "override=$(override)&fsize=$(fsize)", "callbackurl": "http://www.example.com/callback1;http://www.example.com/callbac2;http://www.example.com/callback3"}

在回调策略中包含了callbackurl和callbackbody两个回调参数,callbackurl指定了3个,callbackbody中使用了魔法变量$(override)以及$(fsize)。该回调策略json字符串经过base64编码之后即为:

eyjjywxsymfja0jvzhkioiaib3zlcnjpzgu9jchvdmvycmlkzskmznnpemu9jchmc2l6zskilcaiy2fsbgjhy2tvcmwioiaiahr0cdovl3d3dy5legftcgxllmnvbs9jywxsymfjaze7ahr0cdovl3d3dy5legftcgxllmnvbs9jywxsymfjmjtodhrwoi8vd3d3lmv4yw1wbguuy29tl2nhbgxiywnrmyj9

最后通过请求参数x-obs-callback携带。

如果该桶中已经存在名为example.txt的对象,那么最终回调消息体为:

override=true&fsize=104858

相关文档

网站地图