feign client发送Post请求,发送对象参数,服务端接收不到正确参数报错排查

记一次feignclient发送请求服务端接收不到正确参数排查

服务端代码:

  @Operation(summary = "Create team")
  @PostMapping("post")
  @RequiresPermissions("team:add")
  public RestResponse addTeam(@Valid Team team) {
    this.teamService.createTeam(team);
    return RestResponse.success();
  }

可以看出,服务端接口为Post请求,传参对象为Team
Team中有name和description两个属性。

Feign客户端的代码为:

    @PostMapping(value = "/team/post")
    RestResponse createTeam(@RequestBody Team team);

当我使用客户端调用接口时,服务端在保存数据到数据库时报错,无其余信息。

于是查看原服务的前端调用,发现前端传参:

  • 传参方式为:From Data
    name=PUB_SIT&descrition=xxx
    formdata类型的post请求,参数看起来会像get传参一样
  • 然而常见的post传参方式为:Request Payload
    参数为body的形式:
{
	"name": "PUB_SIT",
	"description":"xxx"
}

故问题出在这里。
解决方案:在feignclient接口方法中使用consumes属性设置请求的Content-Type为multipart/form-data

    @PostMapping(value = "/team/post", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    RestResponse createTeam(@RequestBody Team team);

参考文档:feignclient发送formdata请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值