我刚开始学习Retrofit 2.我需要为现有的Android应用程序使用RESTful API。从本质上讲,Android应用程序的数据模型已经存在。我有一个REST服务,它不会直接转换为应用程序使用的模型类/属性(即内部类属性不符合Retrofit自动工作所需的命名类型)。
例如,给定Car
对象,API可能会返回make
,model
和color
。应用程序的内部模型具有现有的Vehicle
类,而属性名称不直接映射。此外,某些属性必须按特定顺序初始化。
我知道这有资格获得自定义转换器,但你建议我改为查看自定义Gson反序列化器吗?这会是一个更好/更容易的选择吗?
任何指导都会受到赞赏,因为我刚刚开始阅读Retrofit。我喜欢这样一个事实,即我不必编写所有样板代码,但我觉得我无法充分利用它的全部潜力,因为我需要映射'手动完成所有对象及其属性。
答案 0 :(得分:0)
您需要考虑以下几点:
1)API响应是否保持不变(即使缺少属性)格式
然后:
1.1)您可以制作自定义转换器或反序列化器
1.2)修改和同步您的内部Android模型以表示您收到的模型,反之亦然,就像您的Android模型不同,它可能涉及每次响应的大量计算
其他:
2)如果您的API响应采用不同格式并且它确实是RESTful API,那么您应该通过标题或响应正文中的某些方式获取媒体类型的信息,然后根据此信息,您可以选择适当的转换器/解串器。 这更像是Custom Converter,它根据实际响应委托给另一个Converter。
对于这两种情况,您可以在从Retrofit获得响应之后应用某种中间转换器/映射器,这可能是最简单的,但每次获得响应时它都会消耗CPU和内存。