如何直接在界面中为Retrofit调用创建默认主体?

时间:2018-12-24 15:33:05

标签: kotlin retrofit2

我想在我创建的界面内的单个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 :(得分:0)

尝试一下

通用请求:

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>
    }