我正在尝试创建一个RESTful Web服务,我无法让删除工作,我不知道问题出在哪里。我认为问题出在客户端项目的某个地方,但它也可能位于服务器项目的资源类中。
我有一个学生dao类使用这种方法,我不认为这是一个问题,因为它适用于其他项目。
public void deleteStudent(String id){
try {
PreparedStatement pstmt;
pstmt = con.prepareStatement("DELETE FROM APP.STUDENT WHERE ID = ?");
pstmt.setString(1, id);
pstmt.executeUpdate();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
我有一个StudentResource类,我从其中包含此代码的模式创建RESTful资源
@DELETE
public String delete(String id) {
StudentServiceDAO studentsDAO = new StudentServiceDAO();
StudentServiceEntry studentsEntry = studentsDAO.getStudent(id);
studentsDAO.deleteStudent(id);
return "<studentDeleted id = '"+id+"' />";
}
然后我创建了一个java项目并使用这种方法创建了一个名为OneStudent的RESTful Java客户端,我想这可能就是问题所在
public String delete(String id) throws ClientErrorException {
webTarget.request().delete();
WebTarget resource = webTarget;
return resource.request(javax.ws.rs.core.MediaType.APPLICATION_XML).get(String.class);
}
我正试图从这个主类中测试它
OneStudent client = new OneStudent("A555222");
Object response = client.delete("A555222");
client.close();
答案 0 :(得分:1)
是的,您的客户端代码有点偏,但我也认为最好将id移动到这样的路径参数:
@DELETE
@Path("/{id}")
public String delete(@PathParam("id") String id) {
StudentServiceDAO studentsDAO = new StudentServiceDAO();
studentsDAO.deleteStudent(id);
return "<studentDeleted id = '"+id+"' />";
}
那么你的客户:
public String delete(String id) throws ClientErrorException {
return webTarget.path(id)
.request(MediaType.APPLICATION_XML)
.delete(String.class);
}
此外,您不应该在资源中手动构建XML,但这是一个不同的问题......