V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
imba97
V2EX  ›  程序员

关于今天给前端返回数据的结构的争论

  •  
  •   imba97 ·
    imba97 · 3 天前 · 4718 次点击

    今天发生一个离谱的问题

    我是个前端开发,有一个列表接口,本来有数据,后面突然列表没了,前端逻辑没动过

    我看了看接口,发现接口正常,里面列表数据都在,在控制台打印数据也都正常

    最后打印列表字段 rows 发现是 undefined,这才发现列表数据的 key 变成了 data

    争论开始了

    后端反馈是有两种数据结构,一种是有分页一种是无分页

    有分页的接口返回 rows,无分页的接口返回 data

    后面甚至提出前端在响应拦截器判断一下,有 rows 的话拿 rows,没有的话拿 data

    我觉得很离谱,在我的认知中,我认为后端返回的数据要保持一致性

    类似这样

    interface ResponseData {
        code: number
        data: Array | Object // 这里就大概表示一下可以是列表数组可以是对象
        total?: number // 需要的话返回
        message: string
    }
    

    争论半天后端大概意思是:“一般都是这样的,分页和其他查询结果有差异”、“没有必要改 不然看不出来 分页和部分也的区别了”、“你现在没数据了你能第一时间知道是接口改成不分页的了”、“这个框架都几十年了一直都是这样” ...

    最后虽然也改成统一的了

    但我我对这套说辞是:???

    想请教一下大家,你们对接的数据结构也是不统一的吗?哪种方式更好呢?

    第 1 条附言  ·  3 天前
    补充一下

    这次可能是后端误操作改了啥,把有分页接口改成了无分页接口,所以 rows 变成了 data

    我想说的是,如果数据结构统一了,至少就可以避免这次前端做无用功的排错
    第 2 条附言  ·  3 天前
    不是后端没通知前端,可能是后端失误改了,把有分页改成了无分页,导致 rows 变成了 data

    所以我想如果统一接口数据结构,最多可能就是分页失效了,这样前端也能更直观的发现问题

    接口一个 key 变了,很难发现。前端一般只看一下接口有数据,就排查别的问题了,这后面的排查全是浪费时间
    101 条回复    2025-01-07 11:20:19 +08:00
    1  2  
    xiaocaiji111
        101
    xiaocaiji111  
       1 天前
    不分页:
    {
    rid:"e1dsee34d",
    code: 0000,
    msg: "succsess",
    data : {}
    }

    分页:{
    rid:"e1dsee34d",
    code: 0000,
    msg: "succsess",
    data : {
    total: 1000,
    rows: [{}]
    }
    }

    外层结构都是统一的,只有 data 段,分页和不分页是不同的数据结构。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5557 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 08:29 · PVG 16:29 · LAX 00:29 · JFK 03:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.