我应该从服务器发送到 Android 的最佳错误响应?
Best ERROR RESPONSE I should send from Server to Android?
我正在开发 Android 应用程序和服务器之间的通信系统。
我正在使用 Retrofit API 来实现 Android 与服务器的通信。
当我从服务器执行 GET(从 Android 端)到 get 信息时,我使用这样的 CallBackTask 方法:
public void testGet()
{
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(UserApi.SERVER)
.build();
final UserApi svc = restAdapter.create(UserApi.class);
if (svc != null) {
CallableTask.invoke(new Callable<Test>() {
@Override
public Test call() throws Exception {
Test g = svc.getTest();
System.out.println("getVdd() = "+g.getVdd()+"+ getResp() = "+g.getResp());
return g;
}
}, new TaskCallback<Test>() {
@Override
public void success(Test result) {
Intent i = new Intent(getApplicationContext(),SplashRapidoActivity.class);
startActivity(i);
}
@Override
public void error(Exception e) {
Toast.makeText(
getApplicationContext(),
"Unable to connect, please try again.",
Toast.LENGTH_SHORT).show();
}
});
}
}
其中 Test.class
是一个带有变量及其 getter 和 setter 的 POJO class:
public class Test {
String vdd;
String resp;
public Test()
{
}
public void setVdd(String vdd) {
this.vdd = vdd;
}
public String getVdd() {
return vdd;
}
public void setResp(String resp)
{}
public String getResp()
{
return resp;
}
}
所以,我的问题是,如果服务器中的 Test.class 没有有效值,我可以从服务器发送的最佳 ERROR RESPONSE ?
最好的错误响应是对您作为开发人员有意义的响应。我不会乱用默认的 HTTP status/error 代码。相反,我会从服务器发送一个特定的响应。例如,将 HTTP 响应代码保持为 200,但在您发送到应用程序的数据中将其设置为 "ERROR: no values." 或您喜欢的任何值。然后,在您的 Android 应用中,检查响应以查看它是否包含值或错误。像
if(resp.startsWith("ERROR:")){
// Do error handling //
} else {
// Normal code //
}
其实没有"the best error response"。这取决于您的要求。但是有一种被广泛使用的架构称为 REST
并且 Retrofit
是根据 REST
交互设计的。 REST
基本上只是一组规则,clients
和 servers
无需任何文档即可理解。
因此,如果您想通过 REST
从服务器检索(GET
)一些 object/data,您可以接收状态为 200
或接收状态为 404
对正文中的错误(或没有错误)进行适当的描述。
Here 阅读更多内容。
我正在开发 Android 应用程序和服务器之间的通信系统。
我正在使用 Retrofit API 来实现 Android 与服务器的通信。
当我从服务器执行 GET(从 Android 端)到 get 信息时,我使用这样的 CallBackTask 方法:
public void testGet()
{
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(UserApi.SERVER)
.build();
final UserApi svc = restAdapter.create(UserApi.class);
if (svc != null) {
CallableTask.invoke(new Callable<Test>() {
@Override
public Test call() throws Exception {
Test g = svc.getTest();
System.out.println("getVdd() = "+g.getVdd()+"+ getResp() = "+g.getResp());
return g;
}
}, new TaskCallback<Test>() {
@Override
public void success(Test result) {
Intent i = new Intent(getApplicationContext(),SplashRapidoActivity.class);
startActivity(i);
}
@Override
public void error(Exception e) {
Toast.makeText(
getApplicationContext(),
"Unable to connect, please try again.",
Toast.LENGTH_SHORT).show();
}
});
}
}
其中 Test.class
是一个带有变量及其 getter 和 setter 的 POJO class:
public class Test {
String vdd;
String resp;
public Test()
{
}
public void setVdd(String vdd) {
this.vdd = vdd;
}
public String getVdd() {
return vdd;
}
public void setResp(String resp)
{}
public String getResp()
{
return resp;
}
}
所以,我的问题是,如果服务器中的 Test.class 没有有效值,我可以从服务器发送的最佳 ERROR RESPONSE ?
最好的错误响应是对您作为开发人员有意义的响应。我不会乱用默认的 HTTP status/error 代码。相反,我会从服务器发送一个特定的响应。例如,将 HTTP 响应代码保持为 200,但在您发送到应用程序的数据中将其设置为 "ERROR: no values." 或您喜欢的任何值。然后,在您的 Android 应用中,检查响应以查看它是否包含值或错误。像
if(resp.startsWith("ERROR:")){
// Do error handling //
} else {
// Normal code //
}
其实没有"the best error response"。这取决于您的要求。但是有一种被广泛使用的架构称为 REST
并且 Retrofit
是根据 REST
交互设计的。 REST
基本上只是一组规则,clients
和 servers
无需任何文档即可理解。
因此,如果您想通过 REST
从服务器检索(GET
)一些 object/data,您可以接收状态为 200
或接收状态为 404
对正文中的错误(或没有错误)进行适当的描述。
Here 阅读更多内容。