天天看點

使用json格式自定義參數構造簽名回調參數

官網給了兩種方式: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