POSTrequest上的邮递员SpringBoot RestApi状态码415

时间:2020-05-06 19:09:44

标签: json spring-boot postman httprequest restapi

我刚刚开始学习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可以解决问题!

1 个答案:

答案 0 :(得分:0)

此问题是由于模型类中的@JsonManagedReference导致的, 尝试互换@JsonBackReference和@JsonManagedReference。它应该工作。 只需浏览documentation即可了解更多信息。

这是同一案件的类似issue