在平时使用过程中,GET请求是可以直接使用实体参数的,但是当使用feign调用时,会报错。这时了解到使用feign调用时,如果是实体对象,会将参数写入body,而GET请求是不使用body的。这种情况应该怎么处理呢,我有三种办法:
1. 修改服务者。
既然get请求在使用feign的时候无法使用实体,那就修改为post/PUT请求,这样就能使用实体了。但是此种方法时,如果服务提供方使用的restful风格,只是查询数据,居然修改为post请求,这就不合理了。并且如果是跨部门的合作,去要求服务提供者修改,这就更加不现实了。
2. 修改传参格式。
既然服务提供方无法去强制要求,那我们消费端只能修改传参条件。我们可以直接使用Map来传参,只需要加上注解就可以了。
@RequestParam Map param,简单实用。
3. 仍然传入实体对象。
对于第二种方法,传入map可谓是一了百了,但是在实际过程中,应该很多公司都杜绝使用此种方式,map虽然写的简单,但是别人不能一目了然的了解这个map里有什么,换个人来看,就只知道各种map在传递,但是里面具体有什么值,会导致什么后果都无法进行判断,对比接口时也发现,feign的请求和服务提供者的请求不一致。因此,这样也是很多具有代码洁癖,追求代码优雅的人无法忍受的。那么,应该怎么传入实体呢。