問題背景
具體因公司作的業(yè)務(wù)需求黔龟,需要將原來的form表單進(jìn)行驗(yàn)簽序宦,之前比如登錄是
www.abc.com/System/user/login?name=tom&pwd=123
現(xiàn)在都需要該改成以下形式
www.abc.com/System/user/login?param={"name":"tom","pwd":"123"}&sign=202cb962ac59075b964b07152d234b70
但是呢,我發(fā)現(xiàn)之前這套后臺(tái)的開發(fā)者直接是在Controller中是直接這樣實(shí)現(xiàn)的:
@Controller
@RequestMapping("user")
@ResponseBody
public class SmsVerifyCodeController {
@Autowired
private ShortMessageService messageService;
@RequestMapping(value = "login")
public ResponseVo sendSmsCode(String name, String pwd) {
Log.d(name);
Log.d(pwd);
}
}
在Controller業(yè)務(wù)中为狸,以上代碼不能直接取到param里面的name和pwd值歼郭,只能取到param的String值,然后用JsonObject.getString("name")的方法來取值辐棒,但是有很多業(yè)務(wù)的Controller病曾,這樣寫起來也不方便啊。然后我就想到了用HandlerMethodArgumentResolver來實(shí)現(xiàn)漾根。
其實(shí)我完全可以不用把之前的form的業(yè)務(wù)數(shù)據(jù)封裝成JSON的泰涂,但是我這個(gè)人就是比較固執(zhí),還有就是業(yè)務(wù)上面需要對(duì)JSON格式的數(shù)據(jù)進(jìn)行驗(yàn)簽(其實(shí)我完全可以把每個(gè)Key對(duì)應(yīng)的Value值拼接起來加上Salt值驗(yàn)簽辐怕,只不過這樣對(duì)于客戶端調(diào)試不方便负敏,所以就想了一套比較笨的方法吧),好吧既然糾結(jié)過了秘蛇,我們就直接開搞吧其做。