今天在写restful接口时,发现的一个小问题,代码如下:
// An highlighted block
@RestController
@RequestMapping("/register")
public class RegisterController {
@Autowired
private RegisterService registerService;
@PostMapping
public JsonResp create(@RequestBody Register register){
int num = registerService.insertSelective(register);
JsonResp resp = CommonUtils.returnResp(num);
return resp;
}
}
测试数据发送:
报错:Required request body is missing: public dag.util.JsonResp com.dag.controller.RegisterController.create(com.dag.dao.entity.Register)]
解决
@RequestBody是将前端发送的json格式数据封装到我们的对象中,照理来说应该是没有问题的,几经尝试,最后发现问题所在:我们这里传值仍然使用的是K V对,并不是Json格式的数据,不必使用该注解解析Json数据,最后去掉@RequestBody注解就OK了。
最后的代码:
// An highlighted block
@RestController
@RequestMapping("/register")
public class RegisterController {
@Autowired
private RegisterService registerService;
@PostMapping
public JsonResp create(Register register){
int num = registerService.insertSelective(register);
JsonResp resp = CommonUtils.returnResp(num);
return resp;
}
}
PS:针对@RequestBody的应用,应该是前端对发送数据进行了Json格式化才用这个注解,
如JSON.stringify(register)。