客户端实现“Either Monad”设计模式

问题描述

我正在使用 Ktor httpclient 通过 kotlinx-serializer 解析我的 Json 响应。当我收到错误时,我希望能够在不使用 try{}catch{} 的情况下处理它,因为我发现这在我关注的上下文中对于预期的错误处理来说有点过头了,但我想改用 kotlinx.Result 之类的东西. 示例:

OK 返回 Json:

{"id":123,"name":"Frischling"}

返回错误 Json(除了 header 401):

{"timestamp":"2021-01-19T08:06:06.031+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/api/account"}

我的目标是将两个响应作为一个 kotlin.Response 或类似的东西处理,我只是无法理解如何与我安装的 JsonParser() 一起执行此操作。

我知道 Ktor 有类似“expectSucces=false”的东西,它会关闭在 HTTP 错误代码上抛出异常。但我仍然需要能够解析错误或任何给定的实体。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)