android - 改造 - 删除为空,但响应主体类型被声明为非空
问题描述
因此,在我删除 API 中的特定主题后,它会向我抛出此错误消息
deleteTopic 为空,但响应正文类型被声明为非空
该主题已成功删除,但在我的客户端中,此响应以某种方式在我的 catch 块中解决
服务
@DELETE("topics/{id}")
suspend fun deleteTopic(@Path("id") id:String)
回购
override suspend fun deleteTopic(id: String): Resource<Unit> {
return Resource.Success(RetrofitClient.webservice.deleteTopic(id))
}
视图模型
fun deleteTopic(id:String) = liveData(Dispatchers.IO) {
emit(Resource.Loading())
try {
emit(repo.deleteTopic(id))
}catch (e:Exception){
emit(Resource.Failure(e))
}
}
出于某种原因,我成功删除了服务器中的主题,但是当它返回到我的客户端时,它会进入 catch 并返回我上面提到的这个异常,响应是 204 而不是内容,但是我该如何修复这个响应成功地告诉我这个操作是否正确?
我很困惑,我已经读到 github 说我必须返回Response<Unit>
,但我仍然很困惑为什么我应该这样做,它还说返回会阻止我的 4xx 返回码被抛出
解决方案
使用Response<Unit>
作品
参考:https ://github.com/square/retrofit/issues/3075#issuecomment-564556949
推荐阅读
- python - 如何从具有条件的 DATAFRAME 中选择列
- angular-e2e - 如何对 UI 计时器进行 Angular e2e 测试
- vba - word 2010 页脚从第二页更改文本
- spf - 源 ip 的 SPF 失败
- twilio - 使用 twilio 进行 2 因素身份验证
- sql - 解决多个存储过程读取和更新 SQL Server 2014 数据库中的同一个表时的死锁
- pysimplegui - PySimpleGUI:window.read() 与更新窗口或元素有何关系?
- c# - 如何将 YAML 属性反序列化为具有传递参数的类?
- java - Spring Boot application.yml 和 @Value 不起作用
- mysql - 指定的包含路径无效。EntityType 'etrafficModel.cartegrise' 未声明名为 'vehic' 的导航属性