FeignClient不同请求格式解决方案

一、背景

今天项目遇到一个问题,Feign实现Form表单提交,一直显示参数错误,可能就是数据传输格式有问题,使用postman调用是正常的,所以有了这篇问题,和大家分享下经验,Feign不同请求格式的写法

二、方法

一般的写法

@FeignClient(name = "ForlanApi")
public interface LiveShopClient {
	@XX1Mapping(value = "yourPath")
	XX3 getMoney(@RequestHeader Map<String, Object> headerMap, xx2);
}

参数说明:

  • xx1表示请求方式,可以是Post和Get,分别对应@PostMapping和GetMapping
  • xx2表示请求参数
  • xx3表示响应内容

1、请求格式1

Content-Type=application/json
在这里插入图片描述
对应的Feign写法如下:

@PostMapping(value = "yourPath")
XX2 getMoney(@RequestHeader Map<String, Object> headerMap, @RequestBody XXXDTO xxx);

2、请求格式2

Content-Type=application/json
在这里插入图片描述
对应的Feign写法如下:

@PostMapping(value = "yourPath", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
XX2 getMoney(@RequestHeader Map<String, Object> headerMap, @RequestParam("param1") Object value1, @RequestParam("param2")Object value2);

3、请求格式3

Content-Type=application/x-www-form-urlencoded
在这里插入图片描述

对应的Feign写法如下:

@PostMapping(value = "yourPath", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
XX2 getMoney(@RequestHeader Map<String, Object> headerMap, MultiValueMap<String, Object> paramMap);

调用的时候,使用LinkedMultiValueMap接口,如下:

MultiValueMap<String, Object> paramMap = new LinkedMultiValueMap<>();
paramMap.add("param1", "value1");
paramMap.add("param2", "value2");
forlanClient.getMoney(paramMap);

上面这种是比较简单的写法了,网上各种增加其它注解,比如注入form编码器,然后就可以支持Map请求参数,复杂得多,而且试了还不成功,所以推荐上面这种写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Forlan

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值