4

问题

在postman测试请求的时候,出现了一个406错误。

image.png

Not Acceptable 翻译过来 不可接受的。不可接受的什么?去官网看下406到底是什么错误

image.png

上面这段话翻译过来的核心是:
服务器无法生成与请求的主动内容协商标头中定义的可接受值列表相匹配的响应,并且服务器不愿意提供默认表示形式。也就是服务器无法实现客户端的一个 Accept-标头的请求响应。

根据这个错误提示去检查了请求头响应头

image.png

看到请求头和响应头的Content-Type都是application/json 类型没啥问题。

那Google下吧,看了好几篇都没看到具体解决方法。后面看到这条评论

image.png

去检查下代码,只写了Setter方法,没有Getter方法。
原因:在以前一般会使用@Data注解或者@Setter @Getter 注解,这次就没用,我只需要写入数据,并不要得到数据。所以只实现的Setter方法。

public static class pushSchedule {
        List<ScheduleTeacher> scheduleTeacher;
        long currentWeek;
        int currentDay;

        public void setScheduleTeacher(List<ScheduleTeacher> scheduleTeacher) {
            this.scheduleTeacher = scheduleTeacher;
        }

        public void setCurrentWeek(long currentWeek) {
            this.currentWeek = currentWeek;
        }

        public void setCurrentDay(int currentDay) {
            this.currentDay = currentDay;
        }
    }


    public static class ScheduleTeacher {
        private String teacherName;
        private String rooms;
        public void setTeacherName(String teacherName) {
            this.teacherName = teacherName;
        }

        public void setRooms(String rooms) {
            this.rooms = rooms;
        }
    }

加入Getter方法后。再次发起请求,这次居然请求到数据了。

image.png

为什么加入Getter方法后就可以了

Spring Boot返回一个对象作为响应时,框架通常会使用一个序列化库(例如Jackson)将对象转换为JSON格式。在这个序列化过程中,Jackson 依赖于对象的 getter 方法来获取其属性值。如果没有 getter 方法,Jackson 将无法访问这些属性,从而导致序列化失败,进而引发 406 Not Acceptable 错误。

总结

基础还需巩固。不要等到毕业之后发现这些问题,不然亡羊补牢、为时已晚。


zZ_jie
436 声望9 粉丝

虚心接受问题,砥砺前行。