java REST服务返回
我制作了一个REST客户机服务器,一切或多或少都很好。这是一个两难的问题:我有一个选项,可以通过用户名检索用户,当用户实际存在时,这个选项可以正常工作。然而,如果他没有,我会得到204个http代码,这很好,因为我返回了一个空值。我希望我的方法在找不到用户时,向客户端控制台返回一个普通字符串,比如“找不到这样的用户……”,但是方法返回类型在逻辑上是User(class),以便在找到用户对象时返回用户对象。 以下是服务器端:
@GET
@Path("/{uName}")
@Produces({ "application/json", "application/xml"})
public User getUserByUsername(@PathParam("uName") String uName) {
returnAll = usrList.getUsers();
for (User u : returnAll) {
if (u.getUserName().equals(uName))
return u;
}
return null;
}
以下是客户的相关部分:
case 3:
sc.nextLine();
System.out.println("Enter username");
userName = sc.nextLine();
restConnect("http://localhost:8080/rest/user/"
+ userName, "GET");
promptKey();
更改方法以返回字符串类型显然会在实际找到用户时中断代码。我能做些什么来创建两种类型的返回函数?谢谢
编辑:
当找到用户时,我的方法将返回列表中第一个用户的get(0)
,这是错误的。这是我用身份证测试东西的结果
EDITx2:工作客户
case 3:
sc.nextLine();
System.out.println("Enter username");
userName = sc.nextLine();
try{
restConnect("http://localhost:8080/rest/user/"
+ URLEncoder.encode(userName, "UTF-8"), "GET");
}
catch(RuntimeException e){
System.out.println("No such user...");
}
promptKey();
# 1 楼答案
当用户不存在时,代码应该返回4xx错误,当返回错误时,客户端应该有一个分支
考虑一下,对于一个您没有自己开发的客户机,应该如何工作,API的定义可能会更清晰
有关其他结果代码的详细信息,请参见http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html