有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

    考虑一下,对于一个您没有自己开发的客户机,应该如何工作,API的定义可能会更清晰

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