POST请求上的Postman Spring Boot Rest Api状态代码415

Postman SpringBoot RestApi status code 415 on POSTrequest

刚刚开始学习Springboot。一切正常,直到我 运行 遇到这个问题。我搜索了每个 Whosebug 主题和整个互联网,none 解决了我的问题。我尝试以正确的方式设置 Content-Type 和 Accepts,但仍然无效。

用户控制器:

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 解决了问题!

这个问题是因为你的模型中的@JsonManagedReference class, 尝试互换 @JsonBackReference 和 @JsonManagedReference。它应该工作。 只需浏览 documentation 了解更多信息。

这是针对同一病例报告的相似