官网给了两种方式:json格式与表单参数格式.
{
"callbackUrl" : "http://abc.com/test.php",
"callbackHost" : "oss-cn-hangzhou.aliyuncs.com",
"callbackBody" : "{\"bucket\":${mimeType}, \"object\":${object},\"size\":${size},\"mimeType\":${mimeType},\"my_var\":${x:my_var}}",
"callbackBodyType" : "application/json"
}
{
"callbackUrl" : "http://abc.com/test.php",
"callbackBody" : "bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&my_var=${x:my_var}"
}
为了后续接口参数更容易维护因此采用json格式.
踩坑开始:
1.官网给的json格式:
"callbackBody" : "{\"bucket\":${mimeType}, \"object\":${object},\"size\":${size},\"mimeType\":${mimeType},\"my_var\":${x:my_var}}"
$符号前后是没有''的,这不太像是标准的json.......
2.官网说,自定义参数必须为 x:yyyy格式的,必须以 "x:开头",所以json格式化时采用了fastjson,但回调时spring自动将参数映射到bean上采用的jackson,所以接受参数的类属性别名设置时使用的注解不对,
接受参数使用注解,
// @JsonProperty(value = "x:originalFileName")
private String originalFileName;
请求参数注解:
// @JSONField(name = "x:originalFileName")
private String originalFileName;
这样才回调正常.至于为什么注解去掉了,参考踩坑点3
3.今天把注解注释掉了,尼玛,完全正常,真是多次一举
官网给的json格式中,callbackbody中 有这么一个参数,"my_var\":${x:my_var}},他的属性名没有使用x:yyy这种格式,试了下,成功了!!!
关于这点,官网还是很乱的,两个链接,说的不一样的东西,一顿懵逼,自己体会吧.
https://help.aliyun.com/document_detail/50092.html?spm=a2c4g.11186623.2.13.16885cdfPI3cdj#concept-tj5-cv3-wdb
https://help.aliyun.com/document_detail/31989.html?spm=a2c4g.11186623.6.1483.711fb81ejhrtmZ