在Spring Rest应用中,“Content type 'application/json;charset=UTF-8'不受支持”。
在Spring Rest应用中,“Content type 'application/json;charset=UTF-8'不受支持”。
当我在localhost:8080/api/users上进行POST请求以创建一个新用户时,我收到以下错误:
{
"timestamp": "2018-05-28T09:44:55.704+0000",
"status": 415,
"error": "不支持的媒体类型",
"message": "不支持内容类型 'application/json;charset=UTF-8'",
"path": "/api/users/"
}
这是请求的主体,选择了JSON(application/json)。
即使我删除了Roles并将其保持为null
,它仍然会给出相同的错误。
头部的内容类型也是application/json。
这是我的控制器:
@PostMapping("/api/users" ) public User createUser(@Valid @RequestBody User user) { securityService.autologin(user.getUsername(), user.getPassword()); return userService.createUser(user); }
UserService中的createUser函数:
public User createUser(@Valid @RequestBody User user) { user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())); user.setRoles(new HashSet<>(roleRepository.findAll())); return userRepository.save(user); }
这是我的User类:
@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 Setroles; @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 getRoles() { return roles; } public void setRoles(Set roles) { this.roles = roles; } }