在短链接前后端联调时遇见由Feign引发的“奇怪”问题(Feign使用中对于Get请求自动变成Push引发的 Sharding value null must implements Comparable 报错的解决方法)
在短链接前后端联调时遇见由Feign引发的“奇怪”问题(Feign使用中对于Get请求自动变成Push引发的 Sharding value null must implements Comparable 报错的解决方法)
今天在做短链接系统的前后端联调,在前端查询短链接数据的时候发现了问题;
- 在拉取短链接回收站和短链接分组中短链接数据时出现了异常,拉不到数据。回到后台日志中查看,发现是不支持Post方法
对于短链接回收站的拉取异常,很快地就定位到了问题
在哪显然这里是打错了,在用Feigin访问后管的时候,用错了方式
既然两个基本一致的问题解决了一个,那另一个不是也差不多了?
这里就顺着之前的思路Debug,最后同样定位到了向后管发请求的地方,但是怎么都找不到是从哪里发的Post请求。
这时就觉得邪门了,哪里来的Post???
于是就试着把请求从@GetMapping
改成了@DeleteMapping
,居然又用Delete发了请求,这下邪门了。
这里正好前一天晚上调试nacos的时候也遇见了玄学问题
我在配置聚合服务注册到Nacos的服务名时怎么改都没有用,然后半夜折腾了一个多小时就放弃了睡觉了。然后今天一跑起来发现报错了,但是和昨天晚上报错不一样,原来是名称自己又改成我想要的名称了
敲代码,很神奇吧,我昨天也清空过Nacos缓存,重启过,但是并没有什么用。。。过了一个晚上自己就好了。。
又试了下发现还是发PostMapping,然后就关电脑去吃饭跑步了,回来重启电脑发现还是不行。。。
在网上又搜不到相关的信息,所以又把请求打进来的路径逐一排除核实,最终将问题锁定到Feign中
1 | /** |
再以 Feign Get 为关键字进行检索,发现若Feign中的Get请求若携带了RequestBody,就会自动转换成Post请求发送
这里解决方法是将远程调用的调用端使用Post来发送请求,而为了保证外部传RestFul请求的语意,仍然使用Get来传入
之所以之前的回收站能解决,是因为它用的是3个RequestParam;歪打正着了属于是
蒽,上面的解决方法是错的
按照上面的方法再次进行调试,发现在聚合服务中,短链接后台向短链接中控发送请求时,将Post中的RequestBody丢弃了,然后ShardingSphere在查数据库的时候,由于在Params里面找不到分片键,所以报错了Sharding value
nullmust implements Comparable.
,我还以为是聚合服务的分片配错了,又浪费了半天debug
现在的解决方法非常粗暴,但是非常有效。。。。
这里注意分页查询回收站并没有实现OrderTag,可能会在分类排序中