Feigin不支持Key-value形式的请求体传参,所有在传递对象参数的时候需要将服务端的接口加上@RequstBody注解,Feign消费端也需要加上@RequstBody,但是会出现前端在直接访问服务器接口时,需要构建JSON串放在Body里传递过来。Get请求又不支持Body。为了解决这个问题,这里记录解决方案。
1.如果不考虑前端直接调用接口和Feign调用接口不一致
服务端的接口加上@RequstBody注解,Feign消费端也需要加上@RequstBody。
2.升级springboot版本到2.1.x.使用Spring Cloud OpenFeign提供@SpringQueryMap注解。
Feign里加上
class AuditFeiginConfig {
@Bean
public Contract customerContract() {
return new feign.Contract.Default();
}
}
完整Feign代码:
import feign.Contract;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.spri