简单描述下场景,前后端分离的项目,一个功能提交接口,在提交时要做多个规则校验,规则处理结果分为 2 类,拦截和仅提示。仅提示的规则又分为让用户确认 /取消和仅确认 2 类,所有提示确认完后才能正式提交。在触发多个仅提示规则的场景下,接口应该怎么设计?
1
iseki 2023-03-23 21:09:43 +08:00 via Android
不知道具体业务,只能根据自己理解的说说自己的想法,触发拦截和提示时报错返回,确认时增加一个额外的确认指示,看到确认指示则忽略提示
|
2
xlbychen97 OP @iseki 只有一次确认的话加个字段标识可以处理,但是多个不同提示的话,加多个确认字段来标识每一个确认,感觉有点重,就是想知道有没有其他方案
|
3
iseki 2023-03-23 21:16:49 +08:00 via Android
@xlbychen97 不完全的确认允许提交吗?如果允许,你关心这个干嘛;如果不允许,这一个确认标示代表所有确认不好么
|
4
lingex 2023-03-23 21:39:34 +08:00 via Android
前端判断 /提示。数据到了后端除非参数非法,都接受。
|
5
oneisall8955 2023-03-23 22:01:11 +08:00 via Android
分两个接口来写
第 1 个预提交,用来判断,入参 a ,响应结果 A ,前端根据 A 展示让用户确认参数 b (包含每一个确认项) 第 2 个确认提交任务,入参 a+b ,重复执行第 1 个接口的校验,得出结果必须是 A ,否则报错,再从 b 中校验是否包含所有确认项目,否则报错,校验通过就提交任务即可 |
6
renmu 2023-03-23 22:17:51 +08:00 via Android
就所有参数传进去,然后 ifelse ,提示的规则让前端去做
|
7
CEBBCAT 2023-03-23 22:49:28 +08:00 via iPhone
@xlbychen97 #2 不用加多个确认字段呀傻宝,每个错误总得定个错误码吧?你把错误码存到列表里不就行了吗?
综述一下,要么拆成两个接口,一个纯预检,一个确认加执行,要么同一个接口除了辅助校验,另外接收确认。 执行之前检查 Request ,每错一次向集合 A 追加一个唯一错误码,检查完后拿提交过来的“确认”去集合 A 消除,消完了才让继续执行。需要额外讨论的是需不需要在“确认”中额外确认错误项,以防确认的错误和实际的提交不一致。比如除了要求前端复述“我要全部提款”,还要要求前端复述“我要全部提款,现在看到户头余额五块八毛七” 这样可以防止请求发出后后端数据又有更新,产生差错。类似于数据库版本号的设计 |
8
darkengine 2023-03-24 08:28:37 +08:00
关键是“在提交时要做多个规则校验”在前端还是后端做。
1 ,前端可以做:前端在用户确认所有仅提示规则之后再发起提交请求。 2 ,只能后端做:加校验规则接口。 |