@Path作为可选参数?

时间:2019-09-24 08:04:40

标签: android kotlin retrofit2

在我的android项目中,我使用Retrofit:

@POST("/correspondents/{correspondent_id}")
    fun updateCorrespondent(@Path("correspondent_id") correspondentId: String, @Body body: JsonElement): Call<Void>

所以我这样从客户打来电话:

 fun updateCorrespondent(correspondent: Correspondent, callback: Callback<Void>) {
        val call = myRestClient.updateCorrespondent(correspondent.id, correspondent.toUpdateJson())
        call.enqueue(callback)
    }

很好,很好。

但是我需要做@Path("correspondent_id")可选。

我需要这样从客户打来电话:

fun updateCorrespondent(correspondent: Correspondent, callback: Callback<Void>) {
        val call = tangoRestClient.updateCorrespondent(correspondent.toUpdateJson())        
        call.enqueue(callback)
    }

有可能吗?

目前,我使用两种单独的方法:

@POST("/correspondents/{correspondent_id}")
    fun updateCorrespondent(@Path("correspondent_id") correspondentId: String, @Body body: JsonElement): Call<Void>

    @POST("/correspondents/create")
    fun createCorrespondent(@Body body: JsonElement): Call<Void>

是否可以仅使用一种带有可选@Path的方法?

1 个答案:

答案 0 :(得分:1)

@POST("/correspondents/{correspondent_id}") fun updateCorrespondent(@Path("correspondent_id") correspondentId: String?="create", @Body body: JsonElement): Call<Void>

当您不需要对应的ID时,请致电

mtRestClient.updateCorrespondent(body = correspondent.toUpdateJson())