When I do a POST request on localhost:8080/api/users to create a new user I get the following error :
{"timestamp": "2018-05-28T09:44:55.704+0000","status": 415,"error": "Unsupported Media Type","message": "Content type 'application/json;charset=UTF-8' not supported","path": "/api/users/"}
Here is the request's body, JSON (application/json) is selected.
It gives the same error even if I remove the Roles and keep it null
.
The header's content type is application/json as well.
This is my controller :
@PostMapping("/api/users" )public User createUser(@Valid @RequestBody User user) { securityService.autologin(user.getUsername(), user.getPassword()); return userService.createUser(user);}
createUser function in UserService :
public User createUser(@Valid @RequestBody User user) { user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())); user.setRoles(new HashSet<>(roleRepository.findAll())); return userRepository.save(user);}
edit
This is my User class :
@Entity@Table(name = "user")@EntityListeners(AuditingEntityListener.class)@JsonIgnoreProperties(value = {"createdAt", "updatedAt"}, allowGetters = true)public class User implements Serializable{ private static final long serialVersionUID = 1L; public User() { super(); // TODO Auto-generated constructor stub } @Id @Column(name = "user_id") @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Column(name = "user_name") private String name; @Column(name = "user_email") private String email; @Column(name = "user_password") @NotBlank private String password; @Column(name = "user_status") private String status; @Column(name = "user_tel") private String tel; @Column(name = "user_confirmation") private String confirmation; @Column(name = "user_birth_date") @Temporal(TemporalType.DATE) private Date birth_date; @Column(nullable = false, updatable = false) @Temporal(TemporalType.TIMESTAMP) @CreatedDate private Date createdAt; @Column(nullable = false) @Temporal(TemporalType.TIMESTAMP) @LastModifiedDate private Date updatedAt; @JsonManagedReference @ManyToMany @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id")) private Set<Role> roles; @Column(name = "username") @NotBlank private String username; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } 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 String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getConfirmation() { return confirmation; } public void setConfirmation(String confirmation) { this.confirmation = confirmation; } public Date getBirth_date() { return birth_date; } public void setBirth_date(Date birth_date) { this.birth_date = birth_date; } public Date getCreatedAt() { return createdAt; } public Date getUpdatedAt() { return updatedAt; } public void setUpdatedAt(Date updatedAt) { this.updatedAt = updatedAt; } public Set<Role> getRoles() { return roles; } public void setRoles(Set<Role> roles) { this.roles = roles; }}