【问题标题】:Negative scenario for service post method服务发布方法的负面场景
【发布时间】:2021-12-02 01:25:16
【问题描述】:

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

如何将此信息传递给控制器​​ (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?
    }
  }
}

【问题讨论】:

  • 返回 null 呢?并检查一下?

标签: java spring spring-boot rest spring-mvc


【解决方案1】:

首先,您不应该在这种情况下返回 401。 401 表示身份验证问题。 400 似乎更合适。

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

【讨论】:

  • 我决定在服务中抛出专用(自定义)异常,并将此异常的“抛出”添加到控制器方法的签名中,然后我的全局异常处理程序处理该异常并返回 400,它的工作方式类似于魅力!
猜你喜欢
  • 2019-02-08
  • 2016-05-09
  • 1970-01-01
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2011-08-31
相关资源
最近更新 更多