Java Spring Boot 新手。我有一个 API 调用将实体保存到 SQL 数据库。实体的创建花费的时间太长,因此实际保存该方法的方法被设为异步。现在 API 立即返回 201,而不是等待对象被保存。
旧代码:
@PostMapping("/createStudent")
public ResponseEntity<Student> createStudent(@RequestBody Student student) {
Student createdStudent = this.studentService.createStudent(student);
return createdStudent;
}
新代码:
@PostMapping("/createStudent")
public ResponseEntity<Student> createStudent(@RequestBody Student student) {
this.studentService.createAsyncStudent(student);
return new ResponseEntity<>(new Student(),HttpStatus.OK);
}
使用新代码,createAsyncStudent 方法内部某处发生错误。但 API 立即返回 200。有没有办法告诉我的 React 前端 API 无法使用新代码创建学生,或者只能使用旧代码?
createAsyncStudent方法本身就有错误处理代码,但是如何将这个错误信息返回给前端呢?
一般来说,您需要一种机制(
polling
)来检测实体的创建进度。最简单的方法是为 202
方法返回带有创建 ID 的 createStudent
状态,FE 将通过端点定期检查该 ID 的实体状态(例如:GET /student-creation/{id}
)。后端将更新其进度,包括创建的学生 ID 以及任何错误消息到 student-creation
表中。