如图我发起请求时候,参数有数据。但是服务提供方并没收到数据
我们对比了数据类型,类型都是一样的
然后我尝试了百度需求相关类似的问题,得到的答案是说时区,时间上面加注解,数据类型等等。
但是据我分析,我们数据类型一致,我们都在同一个局域网,时区也是一样的。关于时区的设置都是由架构师在nacos里面做了统一配置。所以上文所述论点基本无用,但是看到它提示说分析网络日志。但是框架并没有提供网络日志打印的功能,再深入分析。http请求不管怎么封装,底层基本都是基于http协议做了处理,http协议规定了数据报文要类似下面这样。
”请求报文由起始行、首部字段、空行和实体主体组成,其中起始行包含请求方法、请求URL和HTTP版本;首部字段描述请求的附加信息,以键值对的形式出现;空行用于分隔首部字段和实体主体;实体主体为请求的数据,可以为空“
根据定义可知,数据一定是要写在一个位子的,要么写在URL上面,要么写在请求头,要么写在请求体。 而feign 接口定义时候是要加注解的。比如方法使用get 还是post ,数据写在哪个位置。比如写在请求体,或者请求头。这个就是开发者自行决定的。根据这个思路去查看feign 的定义。
观察到所有post请求的方法,除了1个,其余全都用了 @SpringQueryMap 注解,不明白此注解含义,百度一下
由此可知,此注解是专为get请求搭配使用,于是通知服务提供方,修改注解。改成 @RequestBody
再次调用,参数成功传递。
得出的教训:不要轻易相信那些看着“合理”的,但是自己并不理解的事情就照搬照抄。 凡事需要自己先理解清楚。