删除feign用于基于收集的参数的方括号
对于以下界面:
@RequestLine("GET /v1/users/{userIds}/profile") UserProfiles getUserProfiles( @Param("userIds", expander = UserIdsExpander.class) List<Identifier<User>> userIds )
扩展器被类型为Identifier<User>
的参数调用,而不是List<Identifier>
,这很好,大多数框架也是这样做的(特殊处理集合/地图等),但返回的字符串是:
GET /v1/users/[usera,userb,userc]/profile
我所调用的API接受它为GET /v1/users/usera,userb,userc/profile
。 显而易见的解决方法是在接口中只接受CSV作为字符串参数:
@RequestLine("...") UserProfiles getUserProfiles(@Param("userIds") String userIds)
但是,然后,用户不得不笨拙地使用(突然kotlin为了简洁):
client.getUserProfiles(userIdList.map { IdHelper.toString(it) }.join(","))
有没有办法删除方括号或使扩展器获得整个集合?
编辑
所以从我所知道的是我可以使用默认的方法,这将接受对象,并调用一个CSV字符串..但仍然保持接受CSV字符串躺在方法,我必须这样做每个方法接受一个自定义的持有对象列表(并且有很多这样的API)。 有没有更好的办法?