Retrofit @QUERY:如果该字段为null,则发送到URL

时间:2019-06-20 09:40:15

标签: android retrofit

我有一个问题, 我有以下改装发布请求

@POST("/user")
fun saveUser(@Body User)

User类

data class User(val name: String? =null, val age:Int?=null)

如果我这样称呼

api.saveUser(User(null, 32))

然后,URL请求将是什么样子 这:

https://dummy.com/users?name=null&age=32

或:

https://dummy.com/users?name=&age=32

或:

https://dummy.com/users?age=32

非常感谢。而且,如果您能提供一些很好的证据。

2 个答案:

答案 0 :(得分:1)

它将完全删除查询参数,在您的情况下为:

https://dummy.com/users?age=32

我正在使用HttpLoggingInterceptor()记录请求以检查网址:

val builder = SslClientFactory.okHttpClientBuilder

    if (BuildConfig.DEBUG) {
        val logging = HttpLoggingInterceptor()
        logging.level = HttpLoggingInterceptor.Level.BODY
        builder.addInterceptor(logging)
    }

    return builder.build()

答案 1 :(得分:0)

嗯,我认为它没有被添加到查询URL中。 您将用户添加到请求的正文中。 因此它将在主体中发送用户的JsonObject,如下所示:

{
  "name": null,
  "age" : 32
}

如果我是对的。

它将仅向https://dummy.com/user发送发帖请求<-不添加查询参数。正文包含所有信息。