当前位置: 首页 > news >正文

Feign接口调用GET请求@RequestParam传参丢失

文章目录

    • 问题现象
    • 排查解决
      • GET加注解解决
      • 使用POST方式解决
    • 时间戳传参失败

问题现象

  • 项目使用的是Spring Cloud微服务,服务间调用使用的是Feign
  • 在一次服务调用时,发现GET传参丢失,没有传递过去任何参数
  • 加了@RequestParam注解,发现还是传参失败
  • 传递的参数有2个,1个是一个Long类型主键ID,一个是查询VO

排查解决

GET加注解解决

  • 要使用GET只能将封装的查询VO改为一个个参数
  • 确保在Feign接口的对应请求方法上正确使用@RequestParam注解,并传入正确的参数名称
  • 确保@RequestParam注解中指定的参数类型与Feign接口中方法的参数类型一致
  • 在服务的接口方和调用方,都要使用@RequestParam注解,服务方标明接收GET请求

使用POST方式解决

  • @RequestParam针对单个参数可以使用,对于对象示例无法使用
  • 但是传递多个参数时,使用对象封装比较简单,也比较优雅
  • 这就需要使用@RequestBody注解,只能使用POST方式
  • 最终测试发现,使用POST方式传参,同时增加 @RequestBody注解,可以解决这个问题
  • 同样,在服务的接口方和调用方,都要使用@RequestBody注解,服务方标明接收POST请求

时间戳传参失败

  • 解决传参问题后,发现在传递时间戳类型timeStamp参数时,解析失败
  • 主要是格式问题,无法解析,报错如下:
2023-08-31 15:36:23.971 ERROR 78816 --- [  XNIO-1 task-7] SituationAnalysisIntersectionExtentService : getEventDetailList:
Error while extracting response for type [java.util.List<com.newatc.api.situationanalysis.vo.SituationAnalysisIntersectionVO>] and content type [application/json]; nested exception is org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: 
Cannot deserialize value of type `java.time.Instant` from String "2023-08-31 15:35:05": Failed to deserialize java.time.Instant: (java.time.format.DateTimeParseException) Text '2023-08-31 15:35:05' could not be parsed at index 10; 
nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.Instant` from String "2023-08-31 15:35:05": Failed to deserialize java.time.Instant: (java.time.format.DateTimeParseException) Text '2023-08-31 15:35:05' could not be parsed at index 10at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 2, column: 17] (through reference chain: java.util.ArrayList[0]->com.newatc.api.situationanalysis.vo.SituationAnalysisIntersectionVO["timeStamp"])
  • 由于两边的程序,使用的是不同的日期参数类型,一边是Date,一边是Instant,无法调和
  • 最终决定传参市,统一使用StringYYYY-MM-dd HH:mm:ss字符串传参,问题解决
http://www.lryc.cn/news/180271.html

相关文章:

  • LeetCode每日一题 | 309.买卖股票的最佳时机含冷冻期
  • HTML的学习 Day02(列表、表格、表单)
  • Android shape记录
  • WSL2和ubuntu的安装过程
  • 力扣第150题 逆波兰表达式求值 stack c++
  • 三、飞行和射击
  • GitHub与GitHubDesktop的使用
  • AIGC 微调的方法
  • gcc编译webrtc x64
  • uni-app 实现凸起的 tabbar 底部导航栏
  • 中国1km土壤特征数据集(2010年)
  • 计算机网络笔记 第二章 物理层
  • 使用CreateProcess崩溃:处未处理的异常: 0xC0000005: 写入位置 0x00415652 时发生访问冲突
  • Java 华为真题-出租车计费
  • 开源layui前端框架 收款码生成系统源码 多合一收款码生成源码 带50多套UI模板
  • 微服务moleculer01
  • C++中将指针传递给函数
  • 【51单片机编写占空比按秒渐亮与渐暗】2023-10-2
  • OCI 发布了容器运行时和镜像规范!
  • C++学习笔记一: 变量和基本类型
  • 探索ClickHouse——同时支持导入导出功能的文件格式
  • Scipy库提供了多种正态性检验和假设检验方法
  • 去雨去雪去雾算法之本地与服务器的TensorBoard使用教程
  • 【小沐学前端】Node.js实现基于Protobuf协议的WebSocket通信
  • MySQL学习笔记24
  • objective-c 基础学习
  • 【精彩回顾】 用sCrypt在Bitcoin上构建智能合约
  • Kotlin 使用泛型
  • 深度学习 二:COVID 19 Cases Prediction (Regression)
  • UG\NX二次开发 信息窗口的4种输出方式 NXOpen::ListingWindow::DeviceType