1. 关于注解@RequestBody不能使用String类型接收参数的坑
在写一个逻辑: 发送验证码, 并存入redis时发现了一个@RequestBody注解的坑
前端发送的json字符串:
{
"phone":"13700137001"
}
后端接收代码:
public void SendSmsCode(@RequestBody String phone){
... ...
}
将手机号和验证码存入reids, 键为String phone
, 此时String phone
中存储的数据为整体的json数据:{"phone":"13700137001"}
这时从redis中用手机号phone作为键获取验证码时, 发现获取不到, 因为此时的phone只是一个单纯的手机号13700137001
, 而redis中的键为{"phone":"13700137001"}
.
所以在使用@RequestBody
注解时, 如果用String
接收参数时, 会将全部的参数内容都封装到String字符串中, 这样会导致一些问题. 所以还是用Map集合或者实体类来接收参数.
// 使用实体类接收参数
public void SendSmsCode(@RequestBody User user){
String phone = user.getPhone();
}
// 使用Map集合接收参数
public void SendSmsCode(@RequestBody Map<String, String> map){
String phone = map.get("phone");
}