Android Retrofit Динамическая переменная запроса - PullRequest
0 голосов
/ 10 апреля 2019

В настоящее время я использую библиотеку Retrofit для Android: https://square.github.io/retrofit/

interface MainApi {
@GET('/api/updateuser')
    fun updateUser(
            @Query("userId") userId: UserId,
            @Nullable @Query("programId") programId: ProgramId?): Observable<UserResponse>
}

Но у меня возникла проблема, когда мне нужно добавить динамическую переменную в GET или POST так, чтобы hobby_x = id. Так, например: hobby_12=15 или hobby_35=100.

Как я могу выполнить это с Модифицированной Библиотекой?

1 Ответ

0 голосов
/ 10 апреля 2019

Если у вас есть «динамические» запросы (либо неизвестный набор параметров запроса, либо неизвестное имя ключа запроса), самый простой способ справиться с этим - использовать аннотация @QueryMap .

interface MainApi {

    @GET("/api/updateuser")
    fun updateUser(
            @Query("userId") userId: UserId,
            @Nullable @Query("programId") programId: ProgramId?,
            @QueryMap Map<String, String> hobbies
    ): Observable<UserResponse>
}

И тогда вы можете назвать это как:

val hobbies = mapOf("hobby_12" to "15")
service.updateUser("foo", null, hobbies)

или

val hobbies = mapOf("hobby_35" to "100")
service.updateUser("foo", null, hobbies)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...