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

Java 通过改装2处理动态响应的正确方法,java,android,authentication,jwt,retrofit2,Java,Android,Authentication,Jwt,Retrofit2,假设我有一个RESTAPI,我可以通过调用下面的改装2请求来获取书籍列表 public interface AllRecordsFromRequestInterface { @GET("books/all") Call<List<TrackInfo>> operation(@Header("Authorization") String authentication_token); } 我使用GsonConverterFactory将json转换为模型

假设我有一个RESTAPI,我可以通过调用下面的改装2请求来获取书籍列表

public interface AllRecordsFromRequestInterface {
    @GET("books/all")
    Call<List<TrackInfo>> operation(@Header("Authorization") String   authentication_token);
}
我使用
GsonConverterFactory
将json转换为模型。这是我的模型课

public class Book{
    private int id;
    private String title;
    private String author;
}
我正在使用身份验证令牌来授权自己使用API,这可以在我的请求中看到。有时,由于令牌过期或其他原因,会收到其他响应,而不是高于响应。例如:

{
    "status": "error",
    "message": "Expired token"
}

在改装2中,处理动态响应(已知结构)的正确方法是什么?

您有多种选择:

1-更改API:(这是标准的)

对每个响应都这样更改,如果用户身份验证失败,则将结果保留为null,或者如果身份验证成功,则将列表放入结果中

{
"status" : "error/success"
"message" : ...
"result" : ....
}
2-您可以为改装提供对象类型,并且在响应成功后,您可以使用“instance of”语法将其转换为您的一个模型

公共接口AllRecordsFromRequestInterface{
@获取(“书籍/全部”)
调用操作(@Header(“Authorization”)字符串身份验证\u令牌);
}

您有多种选择:

1-更改API:(这是标准的)

对每个响应都这样更改,如果用户身份验证失败,则将结果保留为null,或者如果身份验证成功,则将列表放入结果中

{
"status" : "error/success"
"message" : ...
"result" : ....
}
2-您可以为改装提供对象类型,并且在响应成功后,您可以使用“instance of”语法将其转换为您的一个模型

公共接口AllRecordsFromRequestInterface{
@获取(“书籍/全部”)
调用操作(@Header(“Authorization”)字符串身份验证\u令牌);
}

如果您的令牌已过期,api应返回错误代码401。你可以从那里开始。如果它返回200和一些错误负载,则它是错误设计的api。如果您的令牌已过期,则api应返回错误代码401。你可以从那里开始。如果它返回200和一些错误负载,那么它是错误设计的api。
public interface AllRecordsFromRequestInterface {
@GET("books/all")
Call<Object> operation(@Header("Authorization") String authentication_token);
}