通过改造处理动态响应的正确方法2

时间:2017-02-03 18:23:27

标签: java android authentication jwt retrofit2

让我们说我有一个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中处理动态响应(具有已知结构)的正确方法是什么?

1 个答案:

答案 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);
}