邮递员对Spring Controller的呼叫始终为null

时间:2018-10-09 08:54:24

标签: java rest spring-mvc postman

我在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参数中。

如果任何人都可以指出问题所在来帮助我,我将非常感激。也欢迎任何有关代码改进的小窍门。

1 个答案:

答案 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)

更新

此外,将您的请求内容类型更改为json enter image description here