请教大佬们一个接口设计的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xlbychen97
V2EX    问与答

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

  •  
  •   xlbychen97 2023-03-23 20:57:38 +08:00 1469 次点击
    这是一个创建于 973 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    这样可以防止请求发出后后端数据又有更新,产生差错。类似于数据库版本号的设计
    darkengine
        8
    darkengine  
       2023-03-24 08:28:37 +08:00
    关键是“在提交时要做多个规则校验”在前端还是后端做。
    1 ,前端可以做:前端在用户确认所有仅提示规则之后再发起提交请求。
    2 ,只能后端做:加校验规则接口。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5576 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 06:16 PVG 14:16 LAX 22:16 JFK 01:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86