我刚刚开始学习Springboot。一切正常,直到我遇到这个问题。我搜索了所有StackOverFlow主题和整个Internet,但都没有解决我的问题。我尝试设置Content-Type并接受正确的方法,但仍然无法正常工作。
UserController:
package com.example.carnet.api;
import com.example.carnet.model.User;
import com.example.carnet.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/carnet/user")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/all")
public List<User> getUsers() {
return userService.getUsers();
}
@GetMapping(path = "/{email}")
public User getUserByEmail(@PathVariable("email") String email) {
return userService.getUserByEmail(email);
}
@GetMapping("/validate")
public boolean validateUser(@RequestParam("email") String email, @RequestParam("password") String password) {
return userService.validateUser(email, password);
}
@PostMapping("/add")
public void addUser(@RequestBody User user) {
userService.addUser(user);
}
@DeleteMapping(path = "/{id}")
public void deleteUserById(@PathVariable("id") int id) {
userService.deleteUserById(id);
}
@PutMapping
public void updatePassword(@RequestBody User user) {
userService.updatePassword(user);
}
}
用户模型:
package com.example.carnet.model;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import java.sql.Date;
import java.util.List;
@Table(name = "users")
@Entity
public class User {
@Id
private int user_id;
private String email;
private String password;
private String name;
private String surname;
private Date birth_date;
@OneToMany(mappedBy = "user")
@JsonManagedReference
private List<Rental> rentals;
public User() {
}
public int getUser_id() {
return user_id;
}
public void setUser_id(int user_id) {
this.user_id = user_id;
}
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 getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public Date getBirth_date() {
return birth_date;
}
public void setBirth_date(Date birth_date) {
this.birth_date = birth_date;
}
}
与Postman进行POST请求后出错:
{
"timestamp": "2020-05-06T19:01:16.498+0000",
"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'application/json;charset=UTF-8' not supported",
"path": "/carnet/user/add"
}
已解决:从用户模型中删除@JsonManagedReference可以解决问题!
答案 0 :(得分:0)
此问题是由于模型类中的@JsonManagedReference导致的, 尝试互换@JsonBackReference和@JsonManagedReference。它应该工作。 只需浏览documentation即可了解更多信息。
这是同一案件的类似issue。