使用openfeign调用外部接口时候会出现这么一个问题,如果外部接口为Get请求,之前只能使用@RequestParam这样将一个个参数写入,这样无形中增加了不少工作量,且显得很麻烦。
后面版本中出了@SpringQueryMap注解,终于可以把实体当做入参了,但是紧跟着又出现另一个问题,那就是,假如对方接口接收的参数是js_code这种形式,那么我们的字段只能定义为js_code,不能按规范定义为jsCode,这无疑让人头疼了,但是真的就没有解决方式吗?
不!其实人家已经为我们想到了解决方案,通过跟踪源码,发现有这么一个自定义方法参数注解QueryMapParameterProcessor针对@SpringQueryMap注解做了增强,其中不断的深入最终发现最终在BeanQueryMapEncoder方法中有对参数做为处理。
如上图所示,只要在对应的实体对应字段的Get方法上加上注解@Param("js_code"),那么最终就会取这个别名作为字段名。比如原先的请求是http://www.xxx.com?jsCode=AAAAAA,在加上@Param("js_code")注解后,请求会变为http://www.xxx.com?js_code=AAAAAA。
最后!虽然这个对于很多人来说可能早就知道,但是我在网上找了许久都没有提到这点的文章,所以特意记录下。