Android翻新动态查询变量

时间:2019-04-10 17:13:09

标签: android kotlin 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=15hobby_35=100

如何在翻新库中执行此操作?

1 个答案:

答案 0 :(得分:0)

当您具有“动态”查询(未知的查询参数集或未知的查询键名)时,处理它的最简单方法是使用the @QueryMap annotation

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)