'Spring boot built-in validators show error on console but nothing on postman response

I am using a POST request and at the same time I'm checking whether the users passed in are valid or not. After reading a guide on validation (Here is the guide https://www.baeldung.com/spring-validation-message-interpolation). I found out that Spring Boot would pass the error message and 400 Bad Request inside of Postman. When I try to do the same actions, I don't get anything in the postman console. I just get the bad request message, and that's all basically. No error object is passed into postman the console remains empty.

This is my POST Controller:

  @PostMapping("/user/create")
   public ResponseEntity<?> registerUser(@Valid @RequestBody SignupRequest signUpRequest) {
  if (userRepository.existsByEmail(signUpRequest.getEmail())) {
  return ResponseEntity
      .badRequest()
      .body(new MessageResponse("Email déjà utilisé!"));
}

// Create new user's account
User user = new User(
                          signUpRequest.getEmail(), 
           encoder.encode(signUpRequest.getPassword()),
                          signUpRequest.getFirstName(),
                          signUpRequest.getLastName(),
                          signUpRequest.getEnabled()
        );

Set<String> strRoles = signUpRequest.getRoles();
Set<Role> roles = new HashSet<>();
System.out.println(signUpRequest.getRoles());

if (strRoles == null) 
{
    Role candidatRole = roleRepository.findByName(ERole.CANDIDAT)
            .orElseThrow(() -> new RuntimeException("Role introuvable"));
        roles.add(candidatRole);
        
} else 
{
  strRoles.forEach(role -> {
    switch (role) 
    {
        case "admin":
              Role adminRole = roleRepository.findByName(ERole.ADMIN)
                  .orElseThrow(() -> new RuntimeException("Role introuvable"));
              roles.add(adminRole);
              break;
        case "rh":
              Role rhRole = roleRepository.findByName(ERole.RH)
                  .orElseThrow(() -> new RuntimeException("Role introuvable"));
              roles.add(rhRole);
          break;
        case "manager":
              Role managerRole = roleRepository.findByName(ERole.MANAGER)
                 .orElseThrow(() -> new RuntimeException("Role introuvable"));
              roles.add(managerRole);
            
          break;
        default:
              Role candidatRole = roleRepository.findByName(ERole.CANDIDAT)
                  .orElseThrow(() -> new RuntimeException("Role introuvable"));
              roles.add(candidatRole);
              
    }
  });
}

user.setRoles(roles);
userRepository.save(user);

return ResponseEntity.ok(new MessageResponse("Utilisateur créé avec succès!"));

}

and This is my SignUpRequest DTO:

    package com.test.app.payload.request;

   import java.util.Set;
   import javax.validation.constraints.*;

   public class SignupRequest {

  @NotBlank(message = "l'email doit avoir une valeur")
  @Size(max = 50)
  @Email(message = "Il faut respecter le format de l'email")
  private String email;
  

  @NotBlank
  @Size(min = 6, max = 40)
  private String password;
  @NotBlank
  private String firstName;
  @NotBlank
  private String lastName;
  @NotNull
  private Boolean enabled;
  @NotEmpty
  private Set<String> roles;
  
  public Boolean getEnabled() {
    return enabled;
}

public void setEnabled(Boolean enabled) {
    this.enabled = enabled;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  public Set<String> getRoles() {
    return this.roles;
  }

  public void setRoles(Set<String> roles) {
    this.roles = roles;
  }
}

This is what I get on my console: Spring boot console 1 Spring Boot console 2 Spring Boot console 3 Postman interface



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source