Java 如何让getMapping显示spring引导的数据
我有一个vue应用程序,我正在向后端发出axios.get请求。我只想将从后端发送的数据写入控制台,但它不起作用。没有返回值。我试图通过postman发出请求,响应为200,但没有显示json对象。没有显示任何错误,我也找不到任何错误 Vue axios:Java 如何让getMapping显示spring引导的数据,java,spring,spring-boot,vue.js,vuetify.js,Java,Spring,Spring Boot,Vue.js,Vuetify.js,我有一个vue应用程序,我正在向后端发出axios.get请求。我只想将从后端发送的数据写入控制台,但它不起作用。没有返回值。我试图通过postman发出请求,响应为200,但没有显示json对象。没有显示任何错误,我也找不到任何错误 Vue axios: getMeetingTimes(){ axios.get("http://localhost:8081/api/meetingTime/") .then(function(response){
getMeetingTimes(){
axios.get("http://localhost:8081/api/meetingTime/")
.then(function(response){
console.log(response.headers)
})
}
Spring实体:
会议地点:
@Entity
@Table(name = "meeting_times")
@Getter
@Setter
public class MeetingTime implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "meeting_date")
private String date;
@Column(name = "start_time")
private String startTime;
@Column(name = "meeting_name")
private String meeting_name;
@Column(name = "end_time")
private String endTime;
@ManyToOne
@JoinColumn(name = "meeting_name" ,insertable = false, updatable = false, referencedColumnName = "meeting_name")
private MeetingsSetting meetingName;
}
服务:
@Service
public class MeetingTimeService {
@Autowired
MeetingTimeRepository meetingTimeRepository;
public List<MeetingTime> findAllMeetingTimes(){
System.out.println("HALLOOO "+meetingTimeRepository.findAll());
return meetingTimeRepository.findAll();
}
}
更新
控制器:
@CrossOrigin(origins = "http://localhost:8080")
@RestController
@RequestMapping("api/meetingTime")
public class MeetingTimeController {
@Autowired
MeetingTimeService meetingTimeService;
@GetMapping(value = "/" )
public void getAllTimes(){
meetingTimeService.findAllMeetingTimes();
}
}
会议设置和会议时间的保存方法:
@PostMapping("/")
public void saveMeeting(@RequestBody MeetingsSetting meetingsSetting){
meetingsSetting.getMeetingTime()
.forEach(mt -> mt.setMeeting_name(meetingsSetting.getMeetingName()));
// ...
meetingSettingService.saveMeeting(meetingsSetting);
}
}
这是内部会议设置控制器
这就是结果:
{
"id": 35,
"date": "2021-06-21",
"startTime": "11:01",
"meeting_name": "Testeriuds",
"endTime": "11:01",
"meetingName": {
"id": 17,
"meetingName": "Testeriuds",
"meetingUrl": null,
"meetingPw": "",
"meetingTime": [
{
"id": 37,
"date": "2021-05-31",
"startTime": "15:30",
"meeting_name": "Testeriuds",
"endTime": "16:30",
当我从axios发出请求时,会出现此错误。但仍在控制台上显示数据:
java.lang.StackOverflowError: null
at java.base/java.io.IOException.<init>(IOException.java:81) ~[na:na]
at com.fasterxml.jackson.core.JacksonException.<init>(JacksonException.java:26) ~[jackson-core-2.12.3.jar:2.12.3]
at com.fasterxml.jackson.core.JsonProcessingException.<init>(JsonProcessingException.java:25) ~[jackson-core-2.12.3.jar:2.12.3]
at com.fasterxml.jackson.core.JsonProcessingException.<init>(JsonProcessingException.java:38) ~[jackson-core-2.12.3.jar:2.12.3]
at com.fasterxml.jackson.databind.JsonMappingException.<init>(JsonMappingException.java:245) ~[jackson-databind-2.12.3.jar:2.12.3]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:785) ~[jackson-databind-2.12.3.jar:2.12.3]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.12.3.jar:2.12.3]
at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728) ~[jackson-databind-2.12.3.jar:2.12.3]
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770) ~[jackson-databind-2.12.3.jar:2.12.3]
at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178) ~[jackson-databind-2.12.3.jar:2.12.3]
java.lang.StackOverflower错误:null
在java.base/java.io.IOException.(IOException.java:81)~[na:na]
在com.fasterxml.jackson.core.JacksonException.(JacksonException.java:26)~[jackson-core-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.core.JsonProcessingException.(JsonProcessingException.java:25)~[jackson-core-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.core.JsonProcessingException.(JsonProcessingException.java:38)~[jackson-core-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.JsonMappingException.(JsonMappingException.java:245)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:785)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:728)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:770)~[jackson-databind-2.12.3.jar:2.12.3]
在com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:178)~[jackson-databind-2.12.3.jar:2.12.3]
让您的@CrossOrigin
与axios请求的主机匹配。还要使控制器端点返回一些内容,而不仅仅是调用方法:
@CrossOrigin(origins = "http://localhost:8081") // <-- because axios did 8081
@RestController
@RequestMapping("api/meetingTime")
public class MeetingTimeController {
@Autowired
MeetingTimeService meetingTimeService;
@GetMapping(value = "/" )
public List<MeetingTime> getAllTimes(){ // removed void return type
return meetingTimeService.findAllMeetingTimes(); // <-- added return here
}
}
@交叉原点(原点=”http://localhost:8081“”/因此,我遇到的最后一个错误称为无限递归,并且可能发生在双向实体关系中。我发现的一个修复方法是将@JsonManagedReference放在实体中,在我的例子中,该实体有多个注释
会议环境是这样的:
@JsonManagedReference
@OneToMany(mappedBy = "meetingName", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<MeetingTime> meetingTime = new HashSet<>();
@JsonBackReference
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "meeting_name" ,insertable = false, updatable = false, referencedColumnName = "meeting_name")
private MeetingsSetting meetingName;
也许有更好的解决方案,如果有人告诉我我的解决方案是正确的还是错误的选择,我将不胜感激。您必须制定CORS政策。您可以在navigator控制台中查看错误。在这里您可以看到如何设置它:我在控制器中启用了跨原点,我将更新我的问题。但是导航器控制台是什么意思呢?刚刚更新了我的问题如果你在导航器中按F12(如果是Chrome)并按console,你将能够看到一些在服务器中看不到的错误。嗨,谢谢,这一切都成功了。但出于某种原因,实体会议设置的一个问题是发送。那是因为他们两人都有一种单一的关系吗?我用save方法更新了这两个类的代码,似乎序列化导致了递归问题,只是在上面的类中添加了@EqualsAndHashCode(exclude=“meetingName”)
,并添加了@EqualsAndHashCode(exclude=“MeetingTime”)
在上面的课程中会议设置
打破递归。嗨,好奇哪种解决方案更像你的或我的最佳实践?
@JsonBackReference
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "meeting_name" ,insertable = false, updatable = false, referencedColumnName = "meeting_name")
private MeetingsSetting meetingName;