Android 改造和错误的数据合同
Android Retrofit and bad data contract
通常 RESTful 结束点 return 一个对象或所述类型对象的列表以及一些用于分页目的的附加数据。
但是,有趣的是,我正在使用的 API 将 return 混合类型对象列表。例如:
{
"media": [
{
"id": 1,
"type": "oranges",
"Some type specific property": "foo"
},
{
"id": 1,
"type": "apples",
"Some type specific property": "bar"
}
]
}
改造是否可以通过反射来适应这一点,并正确挑选出不同类型的对象 return 使用相同的密钥? (如我们的示例 media
)
移动应用程序已经 运行 处于生产模式,适应这种 API 架构最不痛苦的方法是什么?
使用http://www.jsonschema2pojo.org/创建java个对象模型
使用改造
定义您的 api
public interface sampleApi {
@GET("/v1/endpoint")
void promoImages(Callback<CustomObject> callback);
创建适配器
RestAdapter.Builder builder = new RestAdapter.Builder()
.setEndpoint(BuildConfig.BASE_SERVER_ENDPOINT)
.setClient(new OkClient(client));
CustomApi api = builder.build().create(CustomApi.class);
致电api
api.promoImages(callback);
通常 RESTful 结束点 return 一个对象或所述类型对象的列表以及一些用于分页目的的附加数据。
但是,有趣的是,我正在使用的 API 将 return 混合类型对象列表。例如:
{
"media": [
{
"id": 1,
"type": "oranges",
"Some type specific property": "foo"
},
{
"id": 1,
"type": "apples",
"Some type specific property": "bar"
}
]
}
改造是否可以通过反射来适应这一点,并正确挑选出不同类型的对象 return 使用相同的密钥? (如我们的示例 media
)
移动应用程序已经 运行 处于生产模式,适应这种 API 架构最不痛苦的方法是什么?
使用http://www.jsonschema2pojo.org/创建java个对象模型
使用改造
定义您的 apipublic interface sampleApi {
@GET("/v1/endpoint")
void promoImages(Callback<CustomObject> callback);
创建适配器
RestAdapter.Builder builder = new RestAdapter.Builder()
.setEndpoint(BuildConfig.BASE_SERVER_ENDPOINT)
.setClient(new OkClient(client));
CustomApi api = builder.build().create(CustomApi.class);
致电api
api.promoImages(callback);