@RequestBody 没有映射到我的 Post RestAPI 中的 Bean
@RequestBody is not mapping to the Bean in my Post RestAPI
我的 restApi 中有一个 Post 方法,我在其中使用 @RequestBody 将 JSON 映射到 Bean。这是我的控制器代码,我将 JSON 映射到 Employee bean
@RestController
@RequestMapping("/api/employees")
public class EmployeeController {
private EmployeeService employeeService;
public EmployeeController(EmployeeService employeeService) {
super();
this.employeeService = employeeService;
}
//build restAPi for create Employee
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Employee> saveEmployee(@RequestBody Employee employee){
return new ResponseEntity<Employee>(employeeService.saveEmployee(employee),HttpStatus.CREATED );
}
}
下面是 Employee bean class
@Data
@Entity //makes this as JPA entity
@Table(name="employee") // if not defined it creates the table with class name by default
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name="email_id")
private String emailId;
}
此外,这是我的服务class
@Override
public Employee saveEmployee(Employee employee) {
// TODO Auto-generated method stub
return employeeRepository.save(employee);
}
我post对这个服务的JSON请求如下
{
"firstName" : "Priya",
"lastName" : "Venkatesan",
"emailId" : "priyavenkat@gmail.com"
}
我不确定我缺少什么,而且我是 API 开发的新手。请请求帮助。谢谢
在控制器的@RequestBody 中使用持久化实体不是个好主意。
请查看此 link:
我对这个问题的看法:
您正在 jpa 实体中使用 lombok。 Lombok 可能有问题,您的 getters/setters 没有生成,这使得无法映射您的 json 和您的 Employee 对象。
我的 restApi 中有一个 Post 方法,我在其中使用 @RequestBody 将 JSON 映射到 Bean。这是我的控制器代码,我将 JSON 映射到 Employee bean
@RestController
@RequestMapping("/api/employees")
public class EmployeeController {
private EmployeeService employeeService;
public EmployeeController(EmployeeService employeeService) {
super();
this.employeeService = employeeService;
}
//build restAPi for create Employee
@PostMapping(consumes = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Employee> saveEmployee(@RequestBody Employee employee){
return new ResponseEntity<Employee>(employeeService.saveEmployee(employee),HttpStatus.CREATED );
}
}
下面是 Employee bean class
@Data
@Entity //makes this as JPA entity
@Table(name="employee") // if not defined it creates the table with class name by default
public class Employee {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name="email_id")
private String emailId;
}
此外,这是我的服务class
@Override
public Employee saveEmployee(Employee employee) {
// TODO Auto-generated method stub
return employeeRepository.save(employee);
}
我post对这个服务的JSON请求如下
{
"firstName" : "Priya",
"lastName" : "Venkatesan",
"emailId" : "priyavenkat@gmail.com"
}
我不确定我缺少什么,而且我是 API 开发的新手。请请求帮助。谢谢
在控制器的@RequestBody 中使用持久化实体不是个好主意。
请查看此 link:
我对这个问题的看法: 您正在 jpa 实体中使用 lombok。 Lombok 可能有问题,您的 getters/setters 没有生成,这使得无法映射您的 json 和您的 Employee 对象。