Java spring引导请求主体不工作
我正在学习&springboot新手,并尝试创建一个接收post请求的控制器,但在整个测试过程中,控制器总是接收null请求体对象。请告诉我我做错了什么Java spring引导请求主体不工作,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,我正在学习&springboot新手,并尝试创建一个接收post请求的控制器,但在整个测试过程中,控制器总是接收null请求体对象。请告诉我我做错了什么 { "user":{ "name":"teste", "lastName":"teste" } "contact":{ "email":"teste@teste.com", "phone":"0123456789" } "isMarried":true }
{
"user":{
"name":"teste",
"lastName":"teste"
} "contact":{
"email":"teste@teste.com",
"phone":"0123456789"
} "isMarried":true
}
Java类:
@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody User user,
@RequestBody contact,
boolean isMarried){
System.out.println(user.getUsername());
return new ResponseEntity<Void>(HttpStatus.CREATED);
}
@RequestBody注释应该表示请求的整个主体,并且它只绑定到请求中的一个对象。因此,您必须更改输入json格式、post方法签名,并创建一个封装类来保存用户、联系人和IsMarried数据
{
"user": {
"name": "teste",
"lastName": "teste"
},
"contact": {
"email": "teste@teste.com",
"phone": "0123456789"
},
"isMarried": true
}
@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody UserDetail userDetail){
System.out.println(userDetail.getUser.getUsername());
return new ResponseEntity<Void>(HttpStatus.CREATED);
}
class UserDetail{
User user;
Contact contact;
boolean married;
}
您只能发送这样的用户详细信息
@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody User user){
System.out.println(user.getName());
System.out.println(user.getLastName());
return new ResponseEntity<Void>(HttpStatus.CREATED);
}
{
姓名:teste,
姓氏:teste
}
您的请求方法应该如下所示
@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody User user){
System.out.println(user.getName());
System.out.println(user.getLastName());
return new ResponseEntity<Void>(HttpStatus.CREATED);
}
希望这能有所帮助。谢谢你的回答,还有一个问题,如果我在请求中只发送用户,比如:{User{:name:teste,lastName},可以了吗?当然可以,但是联系人详细信息和军事状态的值将为空。我将提供语法作为答案。是的,它会工作,您的联系人对象将为null,而您的联系人对象将为false。JSON始终是一个键、值对符号,因此元素是可选的,如果您不提供任何内容,只发送{},它仍然会创建UserDetail对象,但为空。很高兴我能够提供帮助。欢迎来到堆栈溢出。请注意,在这里说“谢谢”的首选方式是,一旦你有足够的声誉,就投票选出好的问题和有用的答案,并接受对你提出的任何问题最有用的答案,这也会给你的声誉带来一点提升。请看和
@RequestMapping(method=RequestMethod.POST,value= "/user", consumes= MediaType.ALL_VALUE )
public ResponseEntity<Void> login(@RequestBody User user){
System.out.println(user.getName());
System.out.println(user.getLastName());
return new ResponseEntity<Void>(HttpStatus.CREATED);
}