Spring Boot 2.2.5 Post Request Тип контента 'application / json; charset = UTF-8' не поддерживается - PullRequest
0 голосов
/ 26 марта 2020

Я новичок в весенней загрузке. У меня есть почтовый запрос на создание объекта учителя, который в ответ я получаю:

{
    "timestamp": "2020-03-26T14:00:27.498+0000",
    "status": 415,
    "error": "Unsupported Media Type",
    "message": "Content type 'application/json;charset=UTF-8' not supported",
    "path": "/api/v1/teachers"
}

Мой объект учителя выглядит следующим образом:

package ir.darsineh.lms.dal.entity;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.Data;

import javax.persistence.*;
import java.io.Serializable;

@Data
@Entity
@Table(name = "teacher")
public class Teacher implements Serializable {

    @Id
    @Column(name = "id", updatable = false)
    private Long id;

    @JsonIgnore
    @JsonManagedReference
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    @JoinColumn(name = "user_id", referencedColumnName = "id")
    private User user;

}

, а вот мой объект пользователя:

package ir.darsineh.lms.dal.entity;

import com.fasterxml.jackson.annotation.JsonBackReference;
import lombok.Data;
import lombok.ToString;

import javax.persistence.*;
import javax.validation.constraints.Size;
import java.io.Serializable;

@Data
@Entity
@Table(name = "user")
public class User implements Serializable {

    @Id
    @Column(name = "id", updatable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "first_name")
    @Size(max = 255)
    private String firstName;

    @Column(name = "last_name")
    @Size(max = 255)
    private String lastName;

    @ToString.Exclude
    @JsonBackReference
    @OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
    private Teacher teacher;

    @JsonBackReference
    @OneToOne(mappedBy = "user", fetch = FetchType.LAZY)
    private Student student;
}

и вот мой контроллер и сервис:

package ir.darsineh.lms.http;

import ir.darsineh.lms.dal.entity.Teacher;
import ir.darsineh.lms.service.TeacherService;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import java.util.List;

@RestController
@RequestMapping(path = TeacherController.BASE_URL)
public class TeacherController {

    private TeacherService teacherService;

    public static final String BASE_URL = "/api/v1/teachers";

    public TeacherController(TeacherService teacherService) {
        this.teacherService = teacherService;
    }

    @GetMapping
    List<Teacher> getAllTeachers() {
        return teacherService.findAllTeachers();
    }

    @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseStatus(HttpStatus.CREATED)
    Teacher saveTeacher(@RequestBody Teacher teacher, @RequestHeader HttpHeaders headers) {

        System.out.println(headers);
        return teacherService.saveTeacher(teacher);
    }

}


package ir.darsineh.lms.service;

import ir.darsineh.lms.dal.entity.Teacher;
import ir.darsineh.lms.dal.repository.TeacherRepository;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class TeacherService {


    private TeacherRepository teacherRepository;

    public TeacherService(TeacherRepository teacherRepository) {
        this.teacherRepository = teacherRepository;
    }

    public List<Teacher> findAllTeachers() {
        List<Teacher> teachers = teacherRepository.findAll();

        System.out.println("fetched teachers are : " + teachers);
        return teachers;
    }

    public Teacher saveTeacher(Teacher teacher) {
        return teacherRepository.save(teacher);
    }

}

пожалуйста, сообщите мне, если что-то не так с моей сущностью или контроллером или чем-то еще. спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...