问题背景
具体因公司作的业务需求,需要将原来的form表单进行验签,之前比如登录是
www.abc.com/System/user/login?name=tom&pwd=123
现在都需要该改成以下形式
www.abc.com/System/user/login?param={"name":"tom","pwd":"123"}&sign=202cb962ac59075b964b07152d234b70
但是呢,我发现之前这套后台的开发者直接是在Controller中是直接这样实现的:
@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业务中,以上代码不能直接取到param里面的name和pwd值,只能取到param的String值,然后用JsonObject.getString("name")的方法来取值,但是有很多业务的Controller,这样写起来也不方便啊。然后我就想到了用HandlerMethodArgumentResolver来实现。
其实我完全可以不用把之前的form的业务数据封装成JSON的,但是我这个人就是比较固执,还有就是业务上面需要对JSON格式的数据进行验签(其实我完全可以把每个Key对应的Value值拼接起来加上Salt值验签,只不过这样对于客户端调试不方便,所以就想了一套比较笨的方法吧),好吧既然纠结过了,我们就直接开搞吧。