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 .