有没有办法为改造库提供动态端点网址。 我知道修改用于生成实现的改进的接口是困难的或不可能的,但还有另一种方法。
例如,我可以动态更改“/ users / {user} / repos”
public interface GitHubService {
@GET("/users/{user}/repos")
List<Repo> listRepos(@Path("user") String user);
}
我想这样做的原因是因为api设计者提供了一个enpoint url的地图,而客户端坚持使用它们,这样当api改变时我们就不需要发布应用程序的更新了。
答案 0 :(得分:0)
我甚至不知道它是否会起作用,但我会尝试这样做:
listReposTemplateUrl()
返回当前api的模板,其中{user}
将被替换。然后,您将其替换为特定用户,并将已更换{user}
的整个网址传递给listRepos()
来电。
public interface MyApi {
@GET("/apiTemplates/listRepos")
String listReposTemplateUrl();
@GET("/{listReposUrl}")
List<Repo> listRepos(@Path("listReposUrl") String listReposUrl);
}
class TemplateUrlFiller {
public static String fillListRepos(String template, String user) {
return template.replace("{user}", user);
}
}
String user = "Bob";
String listReposTemplate = getMyApi().listReposTemplateUrl(); // "/users/{user}/repos" || "/giveMyRepos/{user}" || ...
List<Repo> = getMyApi().listRepos(TemplateUrlFiller.fillListRepos(listReposTemplate, user));
答案 1 :(得分:0)
您可以在界面中使用它:
@GET("{id}.htm?ca=2_s")
Call<ResponseBody> getAppartsDetailed(@Path(value = "id", encoded = true)String appartId);
关键是
@Path(value =&#34; id&#34;,encoded = true)
然后你会得到
yourBaseUrl / 1164374459.htm?CA = 2_S