无法在数据库中获取要删除的ID,但我无法以这种方式获取id参数
@RequestMapping(value = {"/delete/search/","/delete/search"}, method = RequestMethod.DELETE)
@ResponseBody
public Integer deleteUser(@RequestBody Integer id_search) {
return id_search;
}
我收到此错误消息
"message": "JSON parse error: Can not deserialize instance of java.lang.Integer out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.Integer out of START_OBJECT token\n at [Source: java.io.PushbackInputStream@1b77938; line: 1, column
答案 0 :(得分:2)
也许您正试图从Postman客户端或类似的对象发送带有JSON文本的请求,
{
"id_search":2
}
Jackson不能对它进行反序列化,因为它不是Integer(似乎是,但不是)。来自java.lang Integer的Integer对象稍微复杂一点。
要使您的邮递员请求生效,只需放置(不带花括号{ }
):
2
答案 1 :(得分:1)
这句话错了
@RequestBody Integer id_search
这意味着Spring期望一个Integer
类的主体。但是你传递的是身体与Integer类不匹配的东西。
你有很多选择来解决这个问题。
删除@RequestBody
,然后声明为
public Integer deleteUser(Integer id_search) {...}
使用此功能,您需要将此端点称为
http://localhost:8080/seviceRS/delete/search?id_search=2
您可以像PathVariable
一样将其传递给
http://localhost:8080/seviceRS/delete/search/2
为此,请更改您的控制器方法
@RequestMapping(value =
{"/delete/search/{id_search}"}, method =
RequestMethod.DELETE)
@ResponseBody
public Integer deleteUser(Integer id_search) {...}
如果你想以body身份发送,那么你应该创建一个与你发送的json相匹配的类。
例如。创建一个类
class Demo {
private int id_search;
//Getters & Setters
}
使用这种方法,您的控制器方法看起来像
@RequestMapping(value = {"/delete/search/}, method =
RequestMethod.DELETE)
@ResponseBody
public Integer deleteUser(Demo demo) {
demo.getId_Search();
}