feignClient传参(参数为对象类型)的一个坑
客户端
@RequestMapping(value = "/friendCircleComment/comment",method = RequestMethod.POST)
R comment(@RequestBody FriendCircleComment friendCircleComment);
服务端
1 @RequestMapping(value = "/comment") 2 public R comment(@RequestBody FriendCircleComment friendCircleComment){ 3 friendCircleCommentService.comment(friendCircleComment); 4 return new R(); 5 }
这么传参是没问题的,服务端也能接收到
但是,问题来了,
小程序的post请求的header必须为
header:{ 'content-type':'application/x-www-form-urlencoded' },
导致后台为@RequestBody接收不到参数,
feignClient默认参数请求类型是
header:{ 'content-type':'application/json' },
定义@RequestBody接收参数的headers类型必须为 header:{ 'content-type':'application/json' },
所以这样就有冲突,feignClient和定义为'content-type':'application/x-www-form-urlencoded'的请求接口不能共用
解决方法
不使用对象接收,使用基本类型接收
如下
客户端
1 @RequestMapping(value = "/friendCircleComment/comment",method = RequestMethod.POST) 2 R comment(@RequestParam(value = "friendCircleId",required = false)Integer friendCircleId, 3 @RequestParam(value = "memberId",required = false)Integer memberId, 4 @RequestParam(value = "parentId",required = false)Integer parentId, 5 @RequestParam(value = "comment",required = false)String comment, 6 @RequestParam(value = "replyMemberId",required = false)Integer replyMemberId);
服务端
1 @RequestMapping(value = "/comment") 2 public R comment(@RequestParam(value = "friendCircleId",required = false)Integer friendCircleId, 3 @RequestParam(value = "memberId",required = false)Integer memberId, 4 @RequestParam(value = "parentId",required = false)Integer parentId, 5 @RequestParam(value = "comment",required = false)String comment, 6 @RequestParam(value = "replyMemberId",required = false)Integer replyMemberId 7 ){ 8 FriendCircleComment friendCircleComment = new FriendCircleComment(); 9 friendCircleComment.setFriendCircleId(friendCircleId); 10 friendCircleComment.setMemberId(memberId); 11 friendCircleComment.setParentId(parentId); 12 friendCircleComment.setComment(comment); 13 friendCircleComment.setReplyMemberId(replyMemberId); 14 friendCircleCommentService.comment(friendCircleComment); 15 return new R(); 16 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构