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

前后端接口联调时候后端应该处理数据之后再给前端吗

  •  
  •   xiaohantx ·
    xiaohantx · 37 天前 · 1736 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如标签状态,后端定义 0/1/2/3/4 这种,前端在标签这里是直接显示比较好,还是前端拿到原始数字去查字典再显示 又或者像状态,后端认为存的时候就查字典把 value 和 label 都存进去。

    我是觉得存的时候可以存原始数据,在列表的时候后端查出来把相关内容转一遍直接返回给到前端。而不是值怎么存,怎么取。

    17 条回复    2024-10-15 18:01:55 +08:00
    luckyrayyy
        1
    luckyrayyy  
       37 天前
    label 显然是用户展示侧的东西,不应该由后端拼装。后端提供的接口数据需要考虑通用性,不一定能直接提供给前端使用,不过你可以让他提供一个字典接口,方便你进行拼装。
    wu67
        2
    wu67  
       37 天前
    其实做不做都行的,

    后台侧无所谓, 反正自己人用. 但是编辑数据的时候还是需要用原始状态配合状态字典, 除非你真的就用中文做值...

    用户/客户端侧可以考虑格式化之后再返回, 可以避免部分业务状态被有心人猜到, 违规调用接口达成目的. (别杠什么鉴权, 很多时候真的就是能跑起来而已, 开发周期和 money 也不支持做得太完善...)
    ggzhyipeng
        3
    ggzhyipeng  
       37 天前
    后端设计一定要考虑拓展性和通用性,比如今天 0 表示未使用,明天产品想要改成待使用,甚至想要做多语言版本,你每次更新都要改数据库的数据?
    aababc
        4
    aababc  
       37 天前
    我们针对这种处理是分端的,针对客户端 后端的工作量比较大,基本上所有的数据都是处理好之后返回,客户端基本不做业务上的转换。针对 web 就比较糙了,基本都是让前端去处理
    wysnxzm
        5
    wysnxzm  
       37 天前
    后端给的数据要简洁通用适配不同端比如 web 比如 app 比如小程序,如果多端无差异那么统一后端处理,如果多端有差异就不同端自行转换
    Curtion
        6
    Curtion  
       37 天前
    我们是前端再去查字典展示
    xiaohantx
        7
    xiaohantx  
    OP
       37 天前
    @luckyrayyy
    @wu67
    @ggzhyipeng
    @aababc
    @wysnxzm
    @Curtion
    看起来似乎前后端都能处理,因为我是前端,不太理解后端,感觉似乎应该有个中间层,后端返回的数据经过中间层进行统一转掉
    pianjiao
        8
    pianjiao  
       37 天前
    你不想搞 就让后端返回现成的,这东西要是后面改了,前端也不要发版。要么就是他给 key + 字典 你自己取,反正不要把 label 定义在前端。 到时候要改 两边都要改。正常 就是 key + 字典 你来处理。 其实后端直接返回也没啥。
    wysnxzm
        9
    wysnxzm  
       37 天前
    @xiaohantx #7 纯展示无逻辑可以由后端直接映射到中文,如果需要前端根据类型判断业务比如 type 为 1 时使用 a 样式 type 为 2 时使用 b 样式这种后端就应当返回 1/2/3 给前端
    通常情况下都是给类型不做映射前端自己去做映射,因为纯展示的项目一般不会有前端岗位而是后端把前后端工作一起做了
    xiaohantx
        10
    xiaohantx  
    OP
       37 天前
    @pianjiao 如果前端去做,以为的角度,那我感觉可以在返回拦截中写一个函数,会请求一遍字典,所有返回的内容都经过函数与字典值去匹配去替换掉显示的内容
    pianjiao
        11
    pianjiao  
       37 天前
    @xiaohantx #10 前端做 要在 data 列表中二次处理的,要考虑接口的请求顺序或者是请求一次存本地。然后每次从本地拿,存本地的话,还要考虑字典的更新周期。 所以如果不是那么频繁更新或者什么的话。在初始化的时候将字典请求缓存到本地。然后在替换。

    不然你每次刷新 或者 查询 都得请求字典。
    vinsony
        12
    vinsony  
       37 天前
    让后端同时返回 status 和 statusName 就好了
    skallz
        13
    skallz  
       37 天前
    你这个疑问,其实就是 bff 层出现的意义,哈哈
    toma77
        14
    toma77  
       37 天前 via iPhone
    我认为 label 和 value 都要传,value 在逻辑层用,label 在展示层用,现在后端一般对接好几个端(前端,客户端,三方平台等等),label 等展示统一由后端收口有助于各端一致性,同时需要修改时成本最低
    siweipancc
        15
    siweipancc  
       36 天前 via iPhone
    可以让后台开新接口,但是如果你有自定义国际化就爽了
    lizy0329
        16
    lizy0329  
       36 天前
    如果你是个后端,前端做好
    如果你是个前端,后端做好
    qtxxm
        17
    qtxxm  
       36 天前
    如果是 Java 后端,弄个 注解实现在 返回数据给前端时,做个 字段翻译, 追加 label 。不用这么纠结了,前端展示场景无脑直接用就可以。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2691 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:38 · PVG 23:38 · LAX 07:38 · JFK 10:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.