Java 对Spring控制器的Postman Post调用始终为空

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

我已经在Spring boot中制作了一个带有用户数据库的应用程序。现在,我正在尝试使用postman向控制器中进行restcall,以发送有关用户的信息并将其保存在数据库中。restcall第一次在数据库中保存null对象(所有信息都为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参数中


如果有人能帮我指出问题所在,我将非常感激。提供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)