请教大佬们一个接口设计的问题

2023-03-23 20:57:38 +08:00
 xlbychen97

简单描述下场景,前后端分离的项目,一个功能提交接口,在提交时要做多个规则校验,规则处理结果分为 2 类,拦截和仅提示。仅提示的规则又分为让用户确认 /取消和仅确认 2 类,所有提示确认完后才能正式提交。在触发多个仅提示规则的场景下,接口应该怎么设计?

971 次点击
所在节点    问与答
8 条回复
iseki
2023-03-23 21:09:43 +08:00
不知道具体业务,只能根据自己理解的说说自己的想法,触发拦截和提示时报错返回,确认时增加一个额外的确认指示,看到确认指示则忽略提示
xlbychen97
2023-03-23 21:12:41 +08:00
@iseki 只有一次确认的话加个字段标识可以处理,但是多个不同提示的话,加多个确认字段来标识每一个确认,感觉有点重,就是想知道有没有其他方案
iseki
2023-03-23 21:16:49 +08:00
@xlbychen97 不完全的确认允许提交吗?如果允许,你关心这个干嘛;如果不允许,这一个确认标示代表所有确认不好么
lingex
2023-03-23 21:39:34 +08:00
前端判断 /提示。数据到了后端除非参数非法,都接受。
oneisall8955
2023-03-23 22:01:11 +08:00
分两个接口来写

第 1 个预提交,用来判断,入参 a ,响应结果 A ,前端根据 A 展示让用户确认参数 b (包含每一个确认项)

第 2 个确认提交任务,入参 a+b ,重复执行第 1 个接口的校验,得出结果必须是 A ,否则报错,再从 b 中校验是否包含所有确认项目,否则报错,校验通过就提交任务即可
renmu
2023-03-23 22:17:51 +08:00
就所有参数传进去,然后 ifelse ,提示的规则让前端去做
CEBBCAT
2023-03-23 22:49:28 +08:00
@xlbychen97 #2 不用加多个确认字段呀傻宝,每个错误总得定个错误码吧?你把错误码存到列表里不就行了吗?

综述一下,要么拆成两个接口,一个纯预检,一个确认加执行,要么同一个接口除了辅助校验,另外接收确认。

执行之前检查 Request ,每错一次向集合 A 追加一个唯一错误码,检查完后拿提交过来的“确认”去集合 A 消除,消完了才让继续执行。需要额外讨论的是需不需要在“确认”中额外确认错误项,以防确认的错误和实际的提交不一致。比如除了要求前端复述“我要全部提款”,还要要求前端复述“我要全部提款,现在看到户头余额五块八毛七”

这样可以防止请求发出后后端数据又有更新,产生差错。类似于数据库版本号的设计
darkengine
2023-03-24 08:28:37 +08:00
关键是“在提交时要做多个规则校验”在前端还是后端做。
1 ,前端可以做:前端在用户确认所有仅提示规则之后再发起提交请求。
2 ,只能后端做:加校验规则接口。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/926648

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX