需要获取要在数据库上删除的 id 但我无法通过这种方式获取 id 参数
@RequestMapping(value = {"/delete/search/","/delete/search"}, method = RequestMethod.DELETE)
@ResponseBody
public Integer deleteUser(@RequestBody Integer id_search) {
return id_search;
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误消息
"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
Run Code Online (Sandbox Code Playgroud)
这个说法是错误的
@RequestBody Integer id_search
Run Code Online (Sandbox Code Playgroud)
这意味着 Spring 需要一个类型Integer类的主体。但是您作为主体传递的内容与 Integer 类不匹配。
您有多种选择来解决此问题。
删除@RequestBody并声明为
public Integer deleteUser(Integer id_search) {...}
Run Code Online (Sandbox Code Playgroud)
有了这个,您需要将此端点称为
http://localhost:8080/seviceRS/delete/search?id_search=2
Run Code Online (Sandbox Code Playgroud)PathVariable你可以像这样 传递它
http://localhost:8080/seviceRS/delete/search/2
Run Code Online (Sandbox Code Playgroud)
为此,请像这样更改控制器方法
@RequestMapping(value =
{"/delete/search/{id_search}"}, method =
RequestMethod.DELETE)
@ResponseBody
public Integer deleteUser(Integer id_search) {...}
Run Code Online (Sandbox Code Playgroud)如果您想作为正文发送,那么您应该创建一个与您发送的 json 匹配的类。
例如。创建一个类似的类
class Demo {
private int id_search;
//Getters & Setters
}
Run Code Online (Sandbox Code Playgroud)
通过这种方法,您的控制器方法看起来像
@RequestMapping(value = {"/delete/search/}, method =
RequestMethod.DELETE)
@ResponseBody
public Integer deleteUser(Demo demo) {
demo.getId_Search();
}
Run Code Online (Sandbox Code Playgroud)小智 6
Perhaps you are trying to send a request with JSON text in its body from a Postman client or something similar like this:
{
"id_search":2
}
Run Code Online (Sandbox Code Playgroud)
This cannot be deserialized by Jackson since this is not an Integer (it seems to be, but it isn't). An Integer object from java.lang Integer is a little more complex.
For your Postman request to work, simply put (without curly braces { }):
2
Run Code Online (Sandbox Code Playgroud)