我在Spring Boot中用用户数据库制作了一个应用程序。现在,我试图与邮递员打个电话到控制器中,以发送有关用户的信息并将其保存在数据库中。 restcall第一次在数据库中保存一个空对象(所有信息为null),而不是在postman调用中保存数据,因此我认为错误在于postman和控制器之间的调用。
实体:
@Entity
@Table(name = "user", schema = "localhost", catalog = "")
public class UserEntity {
private int userId;
private int unitId;
private String roleName;
private String firstName;
private String lastName;
控制器:
@RestController
public class UserController {
@Autowired
UserService userService;
@RequestMapping(value = "/addNewUser",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE,
consumes = MediaType.APPLICATION_JSON_VALUE)
public String saveNewUser(UserEntity user) {
try {
userService.saveNewUser(user);
return "User has been saved";
} catch (NullPointerException npe) {
return "Nullpointer: User has not been saved";
} catch (Exception e) {
return e.getMessage();
}
}
}
我发送邮递员呼叫时的调试器:
user = {UserEntity@8954}
userId = 0
unitId = 0
roleName = null
firstName = null
lastName = null
该项目的目标不是“仅仅使其工作”,而是使其以一种干净,适当的方式工作。这就是为什么我要使用一个对象来发送信息,而不是将其放在url参数中。
如果任何人都可以指出问题所在来帮助我,我将非常感激。也欢迎任何有关代码改进的小窍门。
答案 0 :(得分:2)
您将其作为错误的数组传递,像对象一样传递。
还要在pojo中将userId,unitId定义为int
,但在正文中作为字符串发送,因此将其更改为"userId":1,"unitId":1
。像下面那样传递它。
{
"userId":1,
"unitId":1,
"roleName":"AAA",
"firstName":"BBB",
"lastName":"CCC"
}
并通过添加@RequestBody将public String saveNewUser(UserEntity user)
更改为public String saveNewUser(@RequestBody UserEntity user)
。
更新