gpt4 book ai didi

java - Postman对Spring Controller的Post调用始终为null

转载 作者:行者123 更新时间:2023-12-02 03:01:46 24 4
gpt4 key购买 nike

我在 Spring boot 中创建了一个带有用户数据库的应用程序。现在我正在尝试使用 postman 对 Controller 进行休息,以发送有关用户的信息并将其保存在数据库中。第一次restcall在数据库中保存的是null对象(所有信息都是null)而不是postman调用中的数据,所以我认为错误出在postman和controller之间的调用上。

实体:

@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;

Controller :

@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();
}
}
}

postman 打电话:

当我发送 postman 调用时的调试器:

user = {UserEntity@8954} 
userId = 0
unitId = 0
roleName = null
firstName = null
lastName = null

这个项目的目标不是“让它工作”,而是让它以干净、正确的方式工作。这就是为什么我想使用一个对象来发送信息而不是把它放在 url 参数中。

如果有人能帮助我指出问题所在,我将非常感激。任何有关代码改进的建议也非常欢迎给狙击手。

最佳答案

您将其作为数组传递,这是错误的,将其作为对象传递。

另外,您在 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

关于java - Postman对Spring Controller的Post调用始终为null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52717010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com