在 Kotlin 中处理成功和错误的两种不同 Retrofit 响应
Handling two different Retrofit responses for success and error in Kotlin
我正在 Kotlin 中构建一个 android 应用程序,响应有成功和错误两种不同的结构。我的问题是,我可以将这两个响应组合在一起并创建一个数据 class,还是应该为此创建一个密封的 class?
成功响应:
{
"access_token": "xxxxxxxxxxxxxxxxxxxx",
"token_type": "bearer"
}
错误响应:
{
"detail": [
{
"loc": [
"body"
],
"msg": "Invalid credentials",
"type": "invalid-credentials"
}
]
}
那么我可以这样写在一个数据里吗class或者用一个密封的class?
data class Auth (
val access_token: String,
val token_type: String,
val details: Details
)
是的,尝试将所有数据组合成一个数据class。只需将所有变量设为可选即可。
data class Auth (
val access_token: String?,
val token_type: String?,
val detail: List<Detail>?
)
编辑:关于如何访问嵌套数据。很简单。
data class Detail (
val loc: List<String>,
val msg: String,
val type: String
)
然后当发生错误时,您可以使用类似 val msg = auth.detail?.msg
的方式访问数据
我正在 Kotlin 中构建一个 android 应用程序,响应有成功和错误两种不同的结构。我的问题是,我可以将这两个响应组合在一起并创建一个数据 class,还是应该为此创建一个密封的 class? 成功响应:
{
"access_token": "xxxxxxxxxxxxxxxxxxxx",
"token_type": "bearer"
}
错误响应:
{
"detail": [
{
"loc": [
"body"
],
"msg": "Invalid credentials",
"type": "invalid-credentials"
}
]
}
那么我可以这样写在一个数据里吗class或者用一个密封的class?
data class Auth (
val access_token: String,
val token_type: String,
val details: Details
)
是的,尝试将所有数据组合成一个数据class。只需将所有变量设为可选即可。
data class Auth (
val access_token: String?,
val token_type: String?,
val detail: List<Detail>?
)
编辑:关于如何访问嵌套数据。很简单。
data class Detail (
val loc: List<String>,
val msg: String,
val type: String
)
然后当发生错误时,您可以使用类似 val msg = auth.detail?.msg