Как создать тело по умолчанию для вызова Retrofit прямо в интерфейсе? - PullRequest
0 голосов
/ 24 декабря 2018

Я хотел бы добавить тело по умолчанию к одному вызову Retrofit внутри интерфейса, который я сделал.

Допустим, у меня есть интерфейс Retrofit, такой как:

import retrofit2.Call
import retrofit2.http.*

interface ExampleAPI {

    @POST
    fun makeRequest(): Call<SomeResponse>
}

И я быхотел бы добавить тело запроса по умолчанию с полями, такими как:

param_one: j32n4n4jt
param_two: k23n45k43t

Я знаю, что могу обернуть сгенерированную функцию и вставить тело с помощью:

import retrofit2.Call
import retrofit2.http.*

interface ExampleAPI {

    @POST
    fun makeRequest(@Body body: Map<String, String>): Call<SomeResponse>
}

или я могусделать if проверку в перехватчике.

Однако возможно ли реализовать это непосредственно в интерфейсе, и если да, то как?

1 Ответ

0 голосов
/ 24 декабря 2018

Попробуйте это

Общий запрос:

open class CommonRequest(
        @Ignore
        @SerializedName("param_one") val param_one: String = "j32n4n4jt",    
    @Ignore
        @SerializedName("param_two") val param_two: String = "j32n4n4jt"
)

Фактический запрос:

data class Request(
        @SerializedName("name") val name: String = "Andrew",

) : CommonRequest()

Использование:

interface ExampleAPI {
        @POST
        fun makeRequest(@Body request: Request): Call<SomeResponse>
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...