V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
awanganddong
V2EX  ›  程序员

关于业务返回码的问题。

  •  
  •   awanganddong · 2023-03-10 12:17:14 +08:00 · 1494 次点击
    这是一个创建于 629 天前的主题,其中的信息可能已经有所发展或是发生改变。

    和客户端对接项目,然后遇到了以下问题,想问下大家怎么操作的。

    一种报错,属于后台的校验类或者属于代码側的错误。

    比如说 用户 type 类型有误,该数据操作失败。

    这种情况属于通用报错,我们直接返回 400 报错码,然后由客户端自己提供报错信息。

    还有一种属于业务类型的报错,我们返回特定的报错码。报错信息由服务端提供。

    比如 400001 该用户已被封禁。

    现在问题就在于产品会增加弹窗提示需求,这时候是不更包的。所以就想问下大家的处理方案。

    比如增加 400002 该用户涉嫌违规,请谨慎操作。


    如果 code 不变,内容更改如何。

    9 条回复    2023-03-10 16:55:04 +08:00
    devswork
        1
    devswork  
       2023-03-10 12:25:58 +08:00
    增加一个新接口,用于返回指定状态码和提示信息、提示类型绑定列表,每次客户端启动,就请求和缓存最新的列表,客户端获取后端错误码后,根据弹窗类型和提示信息进行提示?
    Chad0000
        2
    Chad0000  
       2023-03-10 12:29:11 +08:00 via iPhone
    建议在网关处理。api 返回 400002 ,网关检测到客户端是旧版本则修改描述或者返回码。
    tianmalj0613
        3
    tianmalj0613  
       2023-03-10 12:43:40 +08:00
    建议先和前后端统一一下 API 的错误码规范,在错误详情中设计一些 action(如弹窗、重试、退出登录等),错误提示语,用于告知客户端的下一步动作。
    awanganddong
        4
    awanganddong  
    OP
       2023-03-10 14:07:34 +08:00
    @devswork 这个我想下,我是不太想通过接口来实现
    @Chad0000 网关处理我觉得太复杂了
    @tianmalj0613 现在就是和大家讨论下平日里的技术实现。
    owen800q
        5
    owen800q  
       2023-03-10 14:21:10 +08:00
    不用错误碼,后端直接传中文信息,如果要国际化就叫前端加 accepted language header , 前端会感谢你的
    awanganddong
        6
    awanganddong  
    OP
       2023-03-10 14:41:19 +08:00
    我现在又新增了一个类别

    code1 通用错误码
    code2 特殊错误码 ,支持客户端弹 toast
    code3 临时错误码, 客户端只用把对应 msg 返回即可。
    Chad0000
        7
    Chad0000  
       2023-03-10 16:06:27 +08:00
    OP 你需要考虑一下越简单越有效的原则,你加太多规则会导致客户端受限太多,如果客户端想要改,那么新旧版本升级将更复杂。你现在只需要考虑兼容旧版客户端,要么在代码里实现,要么网关拦截。

    想像一下如果你设计得足够复杂,那么 API 甚至都可以直接返回终端布局+数据,那么前后端绑得就越深了,一更改影响太多。
    awanganddong
        8
    awanganddong  
    OP
       2023-03-10 16:10:39 +08:00
    @Chad0000 现在我直接在代码里实现了。客户端也仅仅通过 code 码的位数来进行区分。

    整体还是非常简单的。
    zjsxwc
        9
    zjsxwc  
       2023-03-10 16:55:04 +08:00
    还是没看懂。
    “增加弹窗提示需求”与“业务返回码”有什么关联吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3728 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:52 · PVG 08:52 · LAX 16:52 · JFK 19:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.