RestTemplate ——后台请求实体参数未接收

RestTemplate ——后台请求实体参数未接收

环境:
这是一个测试实现远程调用的案例

在这个测试中,用户在浏览器的地址栏输入资源地址:http://locahost/consumer/dept/add,这是一个添加部门信息的请求,

  • 用户输入资源地址:http://localhost/consumer/dept/add?dname=财务部

  • 请求交由服务调用方处理,调用方dept-consumer-80向服务提供方发起请求,远程调用http://locahost:8001/dept/add?dname=财务部

  • 服务调用方向数据库添加名为财务部的部门信息

    在此过程中,RestTemplate发送请求时,服务提供方能否接收到参数,就尤为重要。

    服务调用方:

    package com.baicai.controller;
    /**
     * @version v1.0
     * @ProjectName: dept
     * @ClassName: DeptController
     * @Description: TODO(Dept)
     * @Author: WDD
     * @Date: 2020/2/14 21:40
     */
    @RestController
    public class DeptController {
        @Autowired
        private RestTemplate restTemplate;
    
        private static final String URL_PREFIX = "http://localhost:8001";
        
        @RequestMapping("/consumer/dept/add")
        public boolean add(Dept dept){
            return restTemplate.postForObject(URL_PREFIX+"/dept/add",dept,Boolean.class);
        }
    }
    
    

1.服务提供方未接收到参数

服务提供方:

  package com.baicai.controller;
  /**
   * @version v1.0
   * @ProjectName: dept
   * @ClassName: Controller
   * @Description: TODO(Dept控制类)
   * @Author: WDD
   * @Date: 2020/2/14 21:24
   */
  @RestController
  public class DeptController {
  
      @Autowired
      private DeptService service;
      
      @PostMapping("/dept/add")
      public boolean add(Dept dept){
          return service.add(dept);
      }    
  }

此时这种情况,提供方不能够就收调用方发来的请求参数dept,即未能给变量dept赋值。

2.服务提供方接收到参数

服务提供方:

package com.baicai.controller;
/**
 * @version v1.0
 * @ProjectName: dept
 * @ClassName: Controller
 * @Description: TODO(Dept控制类)
 * @Author: WDD
 * @Date: 2020/2/14 21:24
 */
@RestController
public class DeptController {

    @Autowired
    private DeptService service;
    
    @PostMapping("/dept/add")
    public boolean add(@RequestBody Dept dept){
        return service.add(dept);
    }    
}

此时可以正常就收到返回的参数,不难发现,我们在服务提供方的add方法的参数上添加了注解@RequestBody,

来表明这是一个请求体,会被赋值,其中原理,还在探究。

注:

​ 在使用RestTemplate远程调用时,需要在服务提供方的请求方法实体参数上添加注解@RequestBody

posted @ 2020-02-15 02:56  TwoKe  阅读(111)  评论(0)    收藏  举报