方案1:POST请求 + 注解

将ServiceB接口的请求方式改为POST,同时接受的参数前面加上@RequestBody注解,改正后的代码如下:

  1. /**
  2. * 设备查询
  3. * @param equipmentQuery
  4. * @return
  5. */
  6. @PostMapping("/equipment")
  7. PageResult<Equipment> page(@RequestBody EquipmentQuery equipmentQuery);

方案2:GET请求 + @SpringQueryMap注解

  1. /**
  2. * 设备查询
  3. * @param equipmentQuery
  4. * @return
  5. */
  6. @PostMapping("/equipment")
  7. PageResult<Equipment> page(@SpringQueryMap EquipmentQuery equipmentQuery);

使用方案2的时候一定要注意Spring Cloud的版本,2.1.x以下的不支持哦,只有2.1.x以上版本才能解析参数。

方案3:GET请求 + @RequestParam(“xxx”)注解

  1. /**
  2. * 设备详情
  3. *
  4. * @param id
  5. * @return
  6. */
  7. @GetMapping("/getById")
  8. R<EquipmentVO> info(@RequestParam("id") Integer id);

需要注意的是:
1、spring cloud项目使用FeignClient的时候GET请求方式无法解析对象参数
2、spring cloud项目使用FeignClient的时候GET请求有时候也无法解析单个参数值