springCloud使用 feign 远程调用失败,提示 Required request body is missing
重现
项目中遇到使用 feign 抛出远程调用失败的错误
先来看代码:
- 远程接口
/**
*查询待签,代办 事物
* @param bladeFlow
* @param query
* @return
*/
@GetMapping(GET_PROCESS_LIST)
R<IPage<BladeFlow>> processList(@RequestBody BladeFlow bladeFlow, @RequestBody Query query);
- 调用接口
/**
* 待签、待办合并列表页
*/
@PostMapping("process-list")
@ApiOperationSupport(order = 2)
@ApiOperation(value = "待签、待办合并列表页", notes = "传入流程信息")
public R<IPage<BladeFlow>> processList(@ApiParam("流程信息") BladeFlow bladeFlow, Query query) {
R<IPage<BladeFlow>> processList = iFlowClient.processList(bladeFlow, query);
return R.data(processList);
}
报错信息如下:
2020-12-08 10:56:38.419 ERROR 81461 --- [ XNIO-1 task-13] o.s.c.log.error.RestExceptionTranslator : 消息不能读取:Required request body is missing: public org.springblade.core.tool.api.R<com.baomidou.mybatisplus.core.metadata.IPage<org.springblade.flow.core.entity.BladeFlow>> org.springblade.flow.business.feign.FlowClient.processList(org.springblade.flow.core.entity.BladeFlow,org.springblade.core.mp.support.Query)
提示的很明显,消息不能读取:Required request body is missing
原因
由于 GET 方法请求试没有传输 body 因此无法获取 body 信息,所以这边需要将远程接口改成PostMapping
就可以了
这个时候会遇到 Method has too many Body parameters
原因是接口中只能有一个 @RequestBody