controller和service都有参数校验需求,应该怎样设计?
按照网上的说法
controller应该校验与业务无关的数据,如字符串长度/手机号/email的格式
service只校验和业务相关的,如用户是否存在,库存是否足够等
但是我的service会在多个地方调用,可能其他人在调用的时候并不清楚参数的格式,给了错误的参数,那报错就成了一堆sql了
所以我希望在任何情况下,service都能给出具体的错误。
那这样我controller校验一次,service又校验一次,还都是相同的规则,这不重复了吗?
可是如果controller不做校验的话,好像又不太对
想问问大佬们这种情况下应该怎么设计,或者大家是怎么写的?
还看到这样一句话,这句话说的对吗?我有点不太能接受
校验应该放在 controller 层,到了 service 应该假设参数都是完整且合规的。
谢谢大家,每个人的留言都对我很有用,我全部点赞了,大家说的我都听进去了,我会参考的,感谢
可能其他人在调用的时候并不清楚参数的格式,给了错误的参数
我们不必为别人的愚蠢负责
前提是你写好了对应的注释和结构,原本一个注释就可以解决的问题,为什么要搞得这么麻烦。
其次 如果你考虑抽象封装,那就加一个 DataTransfer,你 Service 接到的是一个 DataTransfer,并不是单独的数据,直接,验证逻辑完全交由 DataTransfer 来做。将职责清晰划分后,就明了多了。职责如下
EX: