Перейти к основному содержимому

Модификация 2 – динамический URL-адрес

· 2 мин. чтения

1. Обзор

В этом коротком руководстве мы узнаем, как создать динамический URL-адрес в Retrofit2 .

2. @URL- аннотация

Бывают случаи, когда нам нужно использовать динамический URL в нашем приложении во время выполнения. Версия 2 библиотеки Retrofit представила аннотацию @Url , которая позволяет нам передавать полный URL-адрес для конечной точки :

@GET
Call<ResponseBody> reposList(@Url String url);

Эта аннотация основана на классе HttpUrl из библиотеки OkHttp, а URL-адрес определяется как ссылка на странице с использованием <a href= “” > . При использовании параметра @Url нам не нужно указывать адрес в аннотации @GET .

Параметр @Url заменяет наш baseUrl из реализации сервиса:

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.addConverterFactory(GsonConverterFactory.create()).build();

Важно то, что если мы хотим использовать аннотацию @Url , она должна быть установлена в качестве первого параметра в сервисном методе.

3. Параметр пути

Если мы знаем, что какая-то часть нашего базового URL-адреса будет постоянной, но мы не знаем его расширения или количества параметров, которые будут использоваться, мы можем использовать аннотацию @Path и `` флаг encoded :

@GET("{fullUrl}")
Call<List<Contributor>> contributorsList(@Path(value = "fullUrl", encoded = true) String fullUrl);

Таким образом, все «/» не будут заменены на %2F , как если бы мы не использовали закодированный параметр. Однако все символы «?» в переданном адресе все равно будет заменено на %3F .

4. Резюме

Библиотека Retrofit позволяет нам легко предоставлять динамический URL-адрес во время выполнения приложения, используя только аннотацию @Url .

Как обычно, все примеры кода можно найти на GitHub .