REST 服务 return

REST service return

我制作了一个 REST 客户端-服务器,一切都或多或少地工作正常。这是一个难题:我可以选择通过用户名检索用户,当用户实际存在时它可以正常工作。但是,当他不这样做时,我得到 204 http 代码,这很好,因为我创建了一个空 return。当没有找到用户时,我希望我的方法 return 向客户端控制台发送一个纯字符串,例如 "No such user found...",但是方法 return 类型在逻辑上是 User (class) , 找到 return 一个用户对象。 这是服务器端:

@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();

将方法更改为 return String 类型显然会在实际找到用户时破坏代码。我该怎么做才能使两个类型 return 函数?谢谢

编辑: 当找到用户时,我的方法将 return 列表中的第一个用户 get(0),这是错误的。这是我用 ID

测试某些东西的残余

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();

当用户不存在时,您的代码应该返回 4xx 错误,并且当返回错误时,客户端应该有一个分支。

想一想您没有自己开发的客户应该如何工作,API 的定义可能会更清楚。

有关其他结果代码的详细信息,请参阅 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html