在JAVA Jersey RESTful中,XMLRootElement无法进行DELETE

时间:2015-07-03 10:16:08

标签: java json rest jersey

好的,所以我使用Jersey在Java中构建RESTful服务。

我已经实现了非常有效的POST,它在我的数据库的Category表中创建了一个新行。现在,当我尝试执行DELETE时,我将其传递给JSON中的相同行,但它返回"400: Bad Request - the request cannot be fulfilled due to bad syntax"

我很困惑,因为JSON是在我对该特定类别进行GET时获得的结果中复制和粘贴的。

以下是相关代码:

@Path("/categories/")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class CategoryResource {

@POST
public Response addCategory(Category category, @Context UriInfo uriInfo)
{
    JSONArray json_array = category_service.addCategory(category);
    URI uri = uriInfo.getAbsolutePathBuilder().path(category.getCategory_name()).build();
    return Response.created(uri)
            .status(Status.CREATED)
            .entity(json_array.toString())
            .build();
}

@DELETE
public Response deleteCategory(Category category)
{
    System.out.println("Category = " + category.toString());
    category_service.deleteCategory(category);
    return Response.ok().build();
}

系统永远不会执行system.out.println(),因为它似乎无法对类别进行编码。 Category类在这里,充满了常见的getter和setter:

@XmlRootElement
public class Category {

private int category_id;
private String category_name;
private boolean child;
private int parent_id;
private boolean category_state;
private String category_reason;

public Category() {

}

原始传递的JSON如下所示:

{
  "category_id": 1,
  "category_name": "tennis",
  "child": true,
  "parent_id": 4,
  "category_state": true,
  "category_reason": "I Like Tennis"
}

请注意,这已从GET的结果中复制并粘贴....

1 个答案:

答案 0 :(得分:0)

正如peeskillet的评论中所表明的那样,删除你不会给任何身体。