改造 - 具有相同 RestAdapter 的多个端点

Retrofit - Multiple endpoints with same RestAdapter

我想知道如何创建可以在两个端点之间切换的 RestAdapter。目前在我的应用程序中,RestAdapter 是在 Application 类(单例)中创建的。我正在寻找一种无需实际创建多个 RestAdapter 即可拥有不同端点的方法。

Retrofit 1 为每个请求调用 Endpoint(无缓存),您只需要使用一些 setter 扩展 Retrofit.Endpoint 并在创建 RestAdapter 时传递此 Endpoint:

Endpoint mDynamicEndpoint = new DynamicEndpoint("http://firstdomain.fr");
RestAdapter restAdapter = new RestAdapter.Builder()
    .setEndpoint(mDynamicEndpoint)
    .build();

mDynamicEndpoint.setBaseUrl("http://yourdomain.com");

可能重复:Dynamic Paths in Retrofit

每个请求都会调用端点。如果您想启用一种算法,您可以实现自己的算法(例如,进行循环法)。除此之外,单个 RestAdapter 绑定到一个 Endpoint,您不能在每个方法或任何东西的基础上控制它。 - 杰克·沃顿

所以我为我在应用程序中使用的不同端点创建了不同的休息适配器。

您可以拥有从端点到 RestAdapter 的映射。您最终会为每个域配备一个适配器。如果你有很多端点,这不是一个很好的解决方案。

我认为如果同时触发对不同端点的两个请求,上述 DynamicEndpoint 解决方案可能会导致竞争条件。