【发布时间】:2018-02-01 05:14:31
【问题描述】:
我有以下 AuthenticationResponse 模型,我使用 retrofit2 进行 3 个 api 调用。如果我拨打 verifyEmail 电话 f.e. JSON 响应正文仅包含有效电子邮件的属性(例如 {"validEmail": true} )。其他 2 个调用仅包含“resetSuccesful”或其他 4 个的属性。
当我收到对 verifyEmail 调用 f.e. 的响应时,如何确保/检查这一点是否包含validEmail 的非空值??
服务:
interface AuthenticationService {
@POST("auth/checkEmail")
fun verifyEmail(@Body email: String): Call<AuthenticationResponse>
@POST("auth/login")
fun login(@Body loginCredentials: LoginCredentials): Call<AuthenticationResponse>
@POST("auth/resetPassword")
fun resetPassword(@Body email: String): Call<AuthenticationResponse>
}
型号:
data class AuthenticationResponse(
val validEmail: Boolean? = null,
val loginSuccess: Boolean? = null,
val retriesLeft: Int? = null,
val authToken: String? = null,
val accountBlocked: Boolean? = null,
val resetSuccesful: Boolean? = null)
编辑: 如果我模拟我的服务器响应以返回 f.e. responseCode = 200 - { "validEmail": null } 并将 validEmail 类型更改为 Boolean(而不是 Boolean?)Retrofit 不会引发任何类型的异常(这是我真正想要的)因此我的模型给了我一个错误的否定我的有效电子邮件值..
【问题讨论】:
-
你为什么有单
AuthenticationResponse?似乎对每个 API 调用使用单独的响应模型会更明智。 -
@miensol:是的,拥有单独的响应模型肯定会解决问题。但我把问题放在这里是因为我真的很想知道是否还有其他方法/一种方法可以确保某个值不为空
标签: kotlin retrofit retrofit2 notnull