Spring Boot Sping Boot 在POST请求中返回多个响应代码和消息体

7lrncoxx  于 2023-04-30  发布在  Spring
关注(0)|答案(2)|浏览(182)

在我的spring Boot 应用程序中,我希望返回不同类型的响应代码和响应体。

@RequestMapping(method = RequestMethod.POST, value = "/users")
public ResponseEntity<User> userSignsUp(@RequestBody User user) {

  if(userService.getUserByNic(user.getNic()).equals(userService.getUserByNic(user.getNic()))) {
    UserErrorBean userError = new UserErrorBean("User already exist","406 error");  
    return ResponseEntity<>(userError ,HttpStatus.CONFLICT); }

   userService.userSave(user);
   return ResponseEntity<>(user, HttpStatus.CREATED);
}

这是我的rest控制器,我想根据不同的条件返回不同的响应。但它仅在满足用户NIC条件时返回条件。如果将用户添加到数据库,则抛出NullPointerException()
我想根据请求返回响应。

relj7zay

relj7zay1#

你可以像这样写一个简单的RestController。

@PostMapping("/users")
    public ResponseEntity<User> userSignsUp(@RequestBody User user) {
        if(user == null){
            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
        }
        if(userService.getUserByNic(user.getNic()).equals(userService.getUserByNic(user.getNic()))) {
            UserErrorBean userError = new UserErrorBean("User already exist","406 error");
            return new ResponseEntity<>(userError, HttpStatus.CONFLICT);
        }

        if(userService.userSave(user)) { // make it return boolean on success or failed
            return new ResponseEntity<>(user, HttpStatus.CREATED);
        } else {
            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
        }
    }
ohfgkhjo

ohfgkhjo2#

检查getter和setter方法的名称,如果你是在eclipse或STS中生成的。
在我的情况下,吸气剂是

public void isActive(){
}

所以我把它改成了

public void getIsActive(){
}

对我很有效。

相关问题