关于RestTemplate postForObject方法请求 服务端Controller接受不到值的问题解决

本文适合有SSM框架基础和springboot开发基础的同学查阅


这里postForObject 方法有三个参数,没有使用四个参数的。

restTemplate.postForObject(String url, Object request, Class responseType);

1.String url => 顾名思义 这个参数是请求的url路径。

2.Object request => 请求的body 这个参数需要再controller类用 @RequestBody 注解接收

3.Class responseType => 接收响应体的类型


private static final String REST_URL_PREFIX = "http://localhost:8001";

@Autowired
RestTemplate restTemplate;
发送请求的controller方法
@RequestMapping(value = "/update", method = RequestMethod.POST)
public String update(User user) {
    return restTemplate.postForObject(REST_URL_PREFIX+"/cloud/update", user, String.class);
} 
接受请求的controller方法
@RestController 
@RequestMapping("/cloud") 
public class UserController {
  //这里一定要用@RequestBody 注解接收--Controller接受不到值的根本原因
  @RequestMapping(value = "/update", method = RequestMethod.POST)
  public String update(@RequestBody User user) {
      if(user.getId() == null){
          return "传值为空";
      }else if (userService.update(user)) {
        return "修改成功";
      } else {
          return "修改失败";
      }
  }

关于RestTemplate postForObject方法请求 服务端Controller接受不到值的问题解决_第1张图片

成功返回

如果不使用@RequestBody注解,则接受不到传值

@RequestMapping(value = "/update", method = RequestMethod.POST)
public String update(User user) {
    if(user.getId() == null){
        return "传值为空";
    }else if (userService.update(user)) {
        return "修改成功";
    } else {
        return "修改失败";
    }
}

关于RestTemplate postForObject方法请求 服务端Controller接受不到值的问题解决_第2张图片

 

你可能感兴趣的:(java,开发语言)