java - 改造覆盖端点

标签 java retrofit

我可以覆盖在 RestAdapter 构建器上设置的端点路径吗?假设我有 20 个使用相同基本 URL 的端点,但有 1 个不使用。我想调用 setEndpoint 以供所有 20 个使用,但在我需要使用不同基本 URL 的情况下覆盖。

Builder builder = new RestAdapter.Builder().setEndpoint("http://url");

使用构建器上设置的端点路径:

 @GET("/relative
 Something getClip();

使用绝对路径(不起作用):

 @GET("http://absolute/path")
 Something getAlert();

最佳答案

每次发出请求时,RestAdapter 实际上都会查询 EndPoint。这意味着您可以实现自己的并将其传递到 RestAdapter 中。保留对它的引用意味着您可以在需要时更改 url。

public final class FooEndpoint implements Endpoint {
  private String url;

  public void setUrl(String url) {
    this.url = url;
  }

  @Override public String getName() {
    return "default";
  }

  @Override public String getUrl() {
    if (url == null) throw new IllegalStateException("url not set.");
    return url;
  }
}

然后简单地做这样的事情

FooEndPoint endPoint = new FooEndPoint();
// Keep a reference to this instance
endPoint.setUrl("url1");

RestAdapter.Builder builder = new RestAdapter.Builder();
    builder.setEndpoint(endPoint);

SomeApi api = builder.build().create(SomeApi.class);
api.getSomeDataFromUrl1();

// when needed you can update the url
endPoint.setUrl("url2");

api.getSomeDataFromUrl2();

关于java - 改造覆盖端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25496244/

相关文章:

java - 带有 Retrofit 的 POST/PUT 参数的默认/常量值

android - Retrofit2 Authorization - 访问 token 的全局拦截器

android - Api 调用失败无法为类 Retrofit/Moshi 创建转换器

java - 我如何从使用 Hibernate Jpa 的多对多关系创建的关联表中获取结果

java - tomcat中的自动线程启动

java - java GUI中动态添加和排序复选框

android - 无法在 Android 中使用改造在多部分/表单数据请求中上传多个文件或文件集合

android - 如何使用 ViewModel 和 LiveData 进行改造 API 调用

java - 如何将按钮放在日本的右上角

java - Steque 和 API 实现