让我们说我有一个REST API,我可以通过调用以下改进2请求来获取书籍列表。
public interface AllRecordsFromRequestInterface {
@GET("books/all")
Call<List<TrackInfo>> operation(@Header("Authorization") String authentication_token);
}
和API响应:
[
{
"id": "1",
"title": "The Catcher in the Rye",
"author":"J. D. Salinger"
},
{
"id": "2",
"title": "The Great Gatsby",
"author":"F. Scott Fitzgerald"
}
]
我使用GsonConverterFactory
将json转换为模型。这是我的模型类
public class Book{
private int id;
private String title;
private String author;
}
我使用身份验证令牌授权自己使用API,因为我可以在我的请求中看到它。有时候因为令牌过期或其他原因而收到其他响应而不是响应。例如:
{
"status": "error",
"message": "Expired token"
}
在改造2中处理动态响应(具有已知结构)的正确方法是什么?
答案 0 :(得分:2)
你有多种选择:
1 - 更改你的API :(这是标准的)
为每个响应更改它,如果用户通过身份验证失败,则将结果保留为null或者如果身份验证成功,则将列表放入结果中。
{
"status" : "error/success"
"message" : ...
"result" : ....
}
2-你可以给对象类型进行改造,在响应成功后你可以使用“instance of”语法将它转换为你的一个模型。
public interface AllRecordsFromRequestInterface {
@GET("books/all")
Call<Object> operation(@Header("Authorization") String authentication_token);
}