Java 对Spring控制器的Postman Post调用始终为空
我已经在Spring boot中制作了一个带有用户数据库的应用程序。现在,我正在尝试使用postman向控制器中进行restcall,以发送有关用户的信息并将其保存在数据库中。restcall第一次在数据库中保存null对象(所有信息都为null)而不是postman调用中的数据,因此我认为错误出现在postman和控制器之间的调用中 实体:Java 对Spring控制器的Postman Post调用始终为空,java,rest,spring-mvc,postman,Java,Rest,Spring Mvc,Postman,我已经在Spring boot中制作了一个带有用户数据库的应用程序。现在,我正在尝试使用postman向控制器中进行restcall,以发送有关用户的信息并将其保存在数据库中。restcall第一次在数据库中保存null对象(所有信息都为null)而不是postman调用中的数据,因此我认为错误出现在postman和控制器之间的调用中 实体: @Entity @Table(name = "user", schema = "localhost", catalog = "") public clas
@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参数中
如果有人能帮我指出问题所在,我将非常感激。提供Snipper的任何代码改进提示都是非常受欢迎的。您将其作为数组传递,这是错误的,请将其作为对象传递 另外,您在pojo中将userId、unitId定义为
int
,但在body中作为字符串发送,因此将其更改为“userId”:1,“unitId”:1
。像下面一样传递它
{
"userId":1,
"unitId":1,
"roleName":"AAA",
"firstName":"BBB",
"lastName":"CCC"
}
并通过添加@RequestBody将公共字符串saveNewUser(UserEntity user)
更改为公共字符串saveNewUser(@RequestBody UserEntity user)
更新
此外,将请求内容类型更改为json
如果您将其作为数组传递,这是错误的,请将其作为对象传递 另外,您在pojo中将userId、unitId定义为
int
,但在body中作为字符串发送,因此将其更改为“userId”:1,“unitId”:1
。像下面一样传递它
{
"userId":1,
"unitId":1,
"roleName":"AAA",
"firstName":"BBB",
"lastName":"CCC"
}
并通过添加@RequestBody将公共字符串saveNewUser(UserEntity user)
更改为公共字符串saveNewUser(@RequestBody UserEntity user)
更新
此外,将请求内容类型更改为json
谢谢您的回复!我已经通过删除引号将userId和unitId更改为整数,并在postman中将类型设置为json,但它们在调试器中仍然保持空值。你知道restcall还有什么问题吗?我怀疑你只使用了你以前的请求..使用{“userId”:1,“unitId”:1,“roleName”:“AAA”,“firstName”:“BBB”,“lastName”:“CCC”}取而代之的是我的答案..你不必使用“UserEntity”键。我使用了你编写的json,它仍然不起作用,但我发现了最后一个问题:控制器方法参数需要@RequestBody才能存储数据。oops..错过了..谢谢..公共字符串saveNewUser(@RequestBody UserEntity user)谢谢您的回复!我已经通过删除引号将userId和unitId更改为整数,并在postman中将类型设置为json,但它们在调试器中仍然保持空值。你知道restcall还有什么问题吗?我怀疑你只使用了你以前的请求..使用{“userId”:1,“unitId”:1,“roleName”:“AAA”,“firstName”:“BBB”,“lastName”:“CCC”}取而代之的是我的答案..你不必使用“UserEntity”键。我使用了你编写的json,它仍然不起作用,但我发现了最后一个问题:控制器方法参数需要@RequestBody才能存储数据。oops..错过了..谢谢..公共字符串saveNewUser(@RequestBody UserEntity user)