Я только начал изучать Springboot. Все работало нормально, пока я не столкнулся с этой проблемой. Я обыскал все StackOverFlow topi c и inte rnet в целом, и ни один из них не помог мне решить мои проблемы. Я попытался установить Content-Type и Accepts правильно, но это все равно не сработало.
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;
}
}
Ошибка после выполнения запроса POST с помощью Postman:
{
"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 из модели пользователя решило проблему!