Java 将请求放入Spring MVC中
我试图在SpringMVC中编写一个简单的Java 将请求放入Spring MVC中,java,spring,spring-mvc,Java,Spring,Spring Mvc,我试图在SpringMVC中编写一个简单的PUT请求方法。我得到以下信息: @RequestMapping(value = "/users/{id}", method = RequestMethod.PUT) public @ResponseBody User updateUser(@PathVariable("id") long id, String name,
PUT
请求方法。我得到以下信息:
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
public @ResponseBody User updateUser(@PathVariable("id") long id,
String name,
String email) {
User user = repository.findOne(id);
user.setName(name);
user.setEmail(email);
System.out.println(user.toString());
repository.save(user);
return user;
}
User{id=1, name='null', email='null'}
这显然是错误的,因为它返回以下内容:
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
public @ResponseBody User updateUser(@PathVariable("id") long id,
String name,
String email) {
User user = repository.findOne(id);
user.setName(name);
user.setEmail(email);
System.out.println(user.toString());
repository.save(user);
return user;
}
User{id=1, name='null', email='null'}
我还尝试了
@RequestBody
注释,但也没有帮助。任何我在这里做错的想法都将不胜感激 您没有告诉spring如何绑定请求中的名称
和电子邮件
参数。例如,通过添加@RequestParam
:
public @ResponseBody User updateUser(@PathVariable("id") long id,
@RequestParam String name,
@RequestParam String email) { ... }
name
和email
参数将从请求中的查询字符串填充。例如,如果您向/users/1?name=Josh&email发出请求=jb@ex.com
,您将得到以下响应:
User{id=1, name='Josh', email='jb@ex.com'}
为了获得有关定义处理程序方法的更多信息,请查看spring。您可以收到
name
和电子邮件,其中包含@RequestBody
注释:
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
public @ResponseBody User updateUser(@PathVariable("id") long id,
@RequestBody User user) {}
当涉及到REST应用程序时,这是一个更好的实践,因为您的URL变得更加干净和REST风格。
您甚至可以在用户
上添加@Valid注释并验证其属性
在postman客户端上,您可以将用户
作为JSON发送到请求主体上,而不是URL上。不要忘记,您的User
类应该具有与您发送的JSON对象相同的字段
请看这里:
我这样做了,出于某种原因,它对我不起作用,在我与邮递员进行查询时返回了奇怪的解析问题。我决定改为@RequestPart
。@sosek我编辑了我的答案,并在《邮差》中添加了你应该怎么做。