pub struct Callback {
pub url: String,
pub host: Option<String>,
pub body: String,
pub sni: Option<bool>,
pub body_type: Option<CallbackBodyType>,
pub custom_variables: HashMap<String, String>,
}Expand description
The callback while call
put_object_from_fileput_object_from_bufferput_object_from_base64complete_multipart_upload
to create an object, if create object successfully,
the OSS server will call your server according to this callback config with POST request method.
Official document: https://help.aliyun.com/zh/oss/developer-reference/callback
Fields§
§url: String创建 Object 成功之后,OSS 服务器会 POST 到这个 URL。
该 URL 调用后的要求有:
- 响应
HTTP/1.1 200 OK - 响应头
Content-Length必须是合法的值 - 响应体为 JSON 格式
- 响应体最大为 3MB
另外:
- 支持同时配置最多 5 个 URL,多个 URL 间以分号(;)分隔。OSS 会依次发送请求,直到第一个回调请求成功返回。
- 支持 HTTPS 协议地址。
- 不支持填写 IPV6 地址,也不支持填写指向 IPV6 地址的域名。
- 为了保证正确处理中文等情况,此 URL 需做编码处理,
例如
https://example.com/中文.php?key=value&中文名称=中文值需要编码为https://example.com/%E4%B8%AD%E6%96%87.php?key=value&%E4%B8%AD%E6%96%87%E5%90%8D%E7%A7%B0=%E4%B8%AD%E6%96%87%E5%80%BC。
host: Option<String>发起回调请求时 Host 头的值,格式为域名或 IP 地址。仅在设置了 url 时有效。
如果没有配置 host,则解析 url 中的 URL,并将解析的 Host 填充到 Host 请求头中。
body: String发起回调时请求Body的值,例如 key=${object}&etag=${etag}&my_var=${x:my_var}。
支持:
- OSS系统参数,要写成
${var_name}格式bucket: The bucket nameobject: The object keyetag: The ETag of the objectsize: 以字节为单位的 Object 大小。调用complete_multipart_upload时,size为整个 Object 的大小mimeType: 资源类型,例如 jpeg 图片的资源类型为image/jpegimageInfo.height: 图片高度。该变量仅适用于图片格式,对于非图片格式,该变量的值为空imageInfo.width: 图片宽度。该变量仅适用于图片格式,对于非图片格式,该变量的值为空imageInfo.format: 图片格式,例如 JPG、PNG 等。该变量仅适用于图片格式,对于非图片格式,该变量的值为空crc64: 与上传文件后返回的x-oss-hash-crc64ecma头内容一致contentMd5: 与上传文件后返回的Content-MD5头内容一致。仅在put_object_from_xxx时候该变量的值不为空vpcId: 发起请求的客户端所在的 VpcId。如果不是通过 VPC 发起请求,则该变量的值为空clientIp: 发起请求的客户端 IP 地址reqId: 发起请求的 RequestId- 发起请求的接口名称,例如
PutObject、PostObject等
- 自定义参数,其使用格式为
${x:var_name}。参数值放到custom_variables中 - 常量(字面量)
sni: Option<bool>客户端发起回调请求时,OSS是否向地址发送服务器名称指示 SNI(Server Name Indication)。 是否发送 SNI 取决于服务器的配置和需求。 对于使用同一个 IP 地址来托管多个 TLS/SSL 证书的服务器的情况,建议选择发送 SNI
body_type: Option<CallbackBodyType>发起回调请求时候的 Content-Type。默认是:application/x-www-form-urlencoded
custom_variables: HashMap<String, String>在回调请求体 (body) 中携带的数据,如果有自定义参数,请使用此属性容纳自定义参数的值。
Key 为自定义变量名,但是不包含 x: 前缀。在生成 body 的时候会自动增加
注意:这里我使用了 Map 来接受自定义参数,也就是说,这里不支持多个同名的自定义参数来表示集合数据类型