服务 post 方法的负面情况

Negative scenario for service post method

我在服务中有 post 方法。 如果学生年龄 > 18,那么我想保存对象。 如果年龄 < 18 .. 我不想保存对象。

如何将此信息传递给 Controller (ResponseEntity) 以抛出 401?

@Service
public class StudentService {
  public Student save(Student Student) {

    //some logic

    if (studentAge > 20) {
      student.setId(null);
      return studentRepository.save(student);
    } else {
      //what are the good practices here?
    }
  }
}

首先,在这种情况下你不应该return 401。 401 表示身份验证问题。 400好像比较合适

第二,服务不应该处理错误代码——这应该由控制器来处理。服务应该表明存在问题,使用它的层应该决定要做什么。 它可以通过 returning null student 或抛出一些专用异常。
一种更简洁的方法是在 save 方法之外进行 - 有一个带有 boolean isValid() 方法的验证器,该方法将在保存

之前调用