官網給了兩種方式: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/31989.html?spm=a2c4g.11186623.6.1483.711fb81ejhrtmZ