Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java REST服务@delete对象_Java_Rest_Service_Server - Fatal编程技术网

Java REST服务@delete对象

Java REST服务@delete对象,java,rest,service,server,Java,Rest,Service,Server,我做了一个REST服务,除了删除,它可以完美地执行所有CRUD操作。当我处理删除请求时,一切正常,直到ArrayList中的最后一个元素。当我删除最后一个时,出于某种原因,我返回了500内部服务器错误?当我将构造函数放入UserList类以创建默认的2个用户时,它成功地创建了它们,并且在我执行删除请求后,我可以删除一个用户。当我试图删除剩下的最后一个时,我得到了500个错误,当我试图列出所有创建的用户时,不知何故,构造函数再次被调用,我又得到了那两个默认用户 删除-服务器端 @DELETE @P

我做了一个REST服务,除了删除,它可以完美地执行所有CRUD操作。当我处理删除请求时,一切正常,直到
ArrayList
中的最后一个元素。当我删除最后一个时,出于某种原因,我返回了500内部服务器错误?当我将构造函数放入
UserList
类以创建默认的2个用户时,它成功地创建了它们,并且在我执行删除请求后,我可以删除一个用户。当我试图删除剩下的最后一个时,我得到了500个错误,当我试图列出所有创建的用户时,不知何故,构造函数再次被调用,我又得到了那两个默认用户

删除-服务器端

@DELETE
@Path("/delete")
@Consumes("application/json")
public Response deleteUser(String input) {

    JSONParser parser = new JSONParser();
    Object obj = null;

    try {
        obj = parser.parse(input);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    JSONObject jsonObject = (JSONObject) obj;

    String uName = (String) jsonObject.get("userName");

    try {
        uName = URLDecoder.decode(uName, "UTF-8");
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

    returnAll = usrList.getUsers();
    if (userExists(uName)) {
        for (User u : returnAll) {
            if (u.getUserName().equals(uName)) {
                returnAll.remove(u);
            }
        }

        return Response.status(204).entity("User " + uName + " deleted...").build();
    } else
        return Response.status(400).entity("No such user...").build();

}
用户列表类

import java.util.ArrayList;

public class UserList implements ListInterface {

    public UserList() {

        if (ListInterface.user.isEmpty()) {
            //populate list if empty

            User usr1 = new User();
            usr1.setUserName("No1");
            usr1.setFullName("Max Dax");
            ListInterface.user.add(usr1);

            User usr2 = new User();
            usr2.setUserName("MrX");
            usr2.setFullName("Ixs Oxs");
            ListInterface.user.add(usr2);
        }

    }

    public ArrayList<User> getUsers() {

        return ListInterface.user;
    }

}
import java.util.ArrayList;
公共类UserList实现了ListInterface{
公共用户列表(){
if(ListInterface.user.isEmpty()){
//如果为空,填充列表
User usr1=新用户();
usr1.设置用户名(“No1”);
usr1.setFullName(“Max Dax”);
ListInterface.user.add(usr1);
用户usr2=新用户();
usr2.setUserName(“MrX”);
usr2.setFullName(“Ixs-Oxs”);
ListInterface.user.add(usr2);
}
}
公共ArrayList getUsers(){
返回ListInterface.user;
}
}
列表接口类

import java.util.ArrayList;

public interface ListInterface {

    public static ArrayList<User> user = new ArrayList<User>();
    public ArrayList<User> getUsers();


}
import java.util.ArrayList;
公共接口列表接口{
public static ArrayList user=new ArrayList();
公共ArrayList getUsers();
}

我通过
http://localhost:8080/rest/user/delete
链接,在body中我提供JSON
{“userName”:“user”}
(我使用chrome advanced rest client进行请求)。

您操作正在迭代的列表。如果捕捉到异常,可能会更容易找到问题。但我认为它就在这里:

for (User u : returnAll) {
        if (u.getUserName().equals(uName)) {
            returnAll.remove(u);
        }
    }

它可能会导致ConcurrentModificationException

您操作正在迭代的列表。如果捕捉到异常,可能会更容易找到问题。但我认为它就在这里:

for (User u : returnAll) {
        if (u.getUserName().equals(uName)) {
            returnAll.remove(u);
        }
    }
它可能会导致ConcurrentModificationException

在从
returnAll=…
到最后一个
ReturnResponse…400…
的所有行周围添加一个
try{…}catch(异常e){e.printStackTrace();}
。您没有包括一些像userExists()这样的函数,我猜您的某个地方有一个空指针。在
returnAll=…
到最后一个
returnresponse…400…
的所有行周围添加一个
try{…}catch(异常e){e.printStackTrace();}
。您没有包括一些像userExists()这样的函数,我猜您在某处有一个空指针。