我有一个API端点,定义为:
GET https://api-server.com/something/{id_or_ids}
id可以是单个对象ID或以逗号分隔的ID列表.
例如
https://api-server.com/something/abcd1234
https://api-server.com/something/abcd1234,abcd4567,gdht64332
如果给定一个id(并找到匹配的对象),我将返回一个json对象:
{“ blah”:“ blah”}
如果给定多个id,我将在json数组中获得响应:
[{“ blah1”:“ bleh”},{“ blah2”:“ meh”},{“ blah3”:“ blah”}]
我目前正在考虑将其实现为两种方法(可以一次完成吗?):
需要一个id并返回一个对象的对象:
@GET("/something/{id}")
void getObject (@Path("id") String objectId, Callback<MyObject> callback)
和
一个带有多个ID并返回对象数组的对象.
@GET("/something/{ids}")
void getObject (Callback<MyObject[]> callback,@Path("ids") String ... objectIds)
有没有办法提供第二种方法varargs并将它们串联在id字段中?
谢谢
解决方法:
改造不知道您想如何在路径中加入字符串.尽管逗号似乎很明显,但是没有理由为什么有人想要管道(|)或冒号(:)或其他任何东西.
因此,我们什么也不做,只能依靠您来选择.
有两种解决方案:
>使用String作为参数类型,然后在调用站点加入.例如:
foo.getObject(Joiner.on(',').join(things));
>使用其toString()方法处理一个或多个对象的正确格式的自定义对象.