Я пишу слой абстракции поверх сетевой библиотеки Retrofit, чтобы мы могли изменить Retrofit в любое время без особого влияния на код приложения.
И мы обычно пишем интерфейс и реализацию Retrofit для взаимодействия с сетью.
Чтобы использовать Retrofit , мы создаем интерфейс Java, который отображается на серверный API, и получаем его экземпляр, используя класс Retrofit, как показано ниже
public interface GitHubService {
@GET("users/{user}/repos")
Call<List<Repo>> listRepos(@Path("user") String user);
}
Класс Retrofit генерирует реализацию интерфейса GitHubService.
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();
GitHubService service = retrofit.create(GitHubService.class);
Позвоните на удаленный веб-сервер.
Call<List<Repo>> repos = service.listRepos("octocat");
Любые указатели, как мы можем построить эти интерфейсы внутри библиотеки Abstraction на основе полученного запроса или есть лучший способ написать абстракцию для него?
Я надеюсь, что донесу мысль о том, что способ, которым мы используем Retrofit, немного отличается, потому что он ожидает интерфейс с аннотациями, о которых наше приложение не знает. В противном случае наше приложение будет тесно связано с аннотациями Retrofit и такими классами, как Call (см. Тип возврата).