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

接口设计请教

  •  
  •   reid2017 · 2019-07-09 18:06:53 +08:00 · 5384 次点击
    这是一个创建于 1993 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前端 app 里有三个业务开关 true/false,三个开关对应的业务是相互独立不关联的,而且都在同一个设置页面,对应于数据库同一张表里的三个字段,那么在设计修改接口时,是三个开关各设计一个接口,or 只设计一个接口( 传参方式用 JSON request body )?

    目前是各开关一个独立的接口,感觉有点冗余。。
    18 条回复    2019-07-30 00:20:35 +08:00
    rain0002009
        1
    rain0002009  
       2019-07-09 18:14:37 +08:00
    像极了我们的后端,获得超级管理员数量,管理员数量,和编辑数量 竟然是 3 个接口
    luckylo
        2
    luckylo  
       2019-07-09 18:37:29 +08:00 via Android
    同一个业务场景,web(pc 浏览器),wap ,app 会写三套接口,你能理解?
    cccssss
        3
    cccssss  
       2019-07-09 18:54:01 +08:00
    @luckylo 重点老板还觉着这种人干活出活。一直有功能开发出来,而三端复用 api 的人整天无所事事?
    ffeii
        4
    ffeii  
       2019-07-09 18:58:13 +08:00
    我觉得都可以,都合理
    micean
        5
    micean  
       2019-07-09 19:06:44 +08:00
    很正常,每个接口尽量做好一件事而不是只为了满足前端的需求
    irvinghua
        6
    irvinghua  
       2019-07-09 19:40:56 +08:00   ❤️ 1
    肯定是一个接口干完这个事情优啊。。而且你这表结构设计也不合理,字段应该设计成:id,switch_name,switch_status(枚举类别 true/false) ,一个开关状态对应一条记录,而不是新增一个开关,就加一个字段。如果需求频繁改,你这表结构字段频繁变动,sql 也频繁变,ORM 映射成实体类也频繁变,这不累死?
    Caballarii
        7
    Caballarii  
       2019-07-09 20:13:44 +08:00
    rest 的缺点就是这样,graphql 欢迎你
    jiekii
        8
    jiekii  
       2019-07-09 21:59:02 +08:00
    设计个 API 这么纠结 >_>
    rainbirda
        9
    rainbirda  
       2019-07-09 22:17:16 +08:00 via Android
    感觉没啥毛病啊 单一职责 而且以后每个开关后台有业务的话 改一个开关不至于影响其他的
    yuankui
        10
    yuankui  
       2019-07-09 22:39:46 +08:00
    现在的 web 接口,就是太灵活,一个东西有很多种解,这样才会早餐分歧。。
    啥时候,能出一个编程范式,可能一个东西,就只有一种实现,那么程序时间就可以解放了。

    甚至,编程机器人,也就不远了。。哈哈😄
    zisway
        11
    zisway  
       2019-07-09 23:00:31 +08:00   ❤️ 1
    每个开关一条记录,一个接口根据唯一 key 获取开关的值。
    a852695
        12
    a852695  
       2019-07-09 23:08:06 +08:00
    遇到过同样的情况,比如说表单修改这些,都是直接将整个 form 传给后端更新掉。
    reid2017
        13
    reid2017  
    OP
       2019-07-09 23:13:12 +08:00
    @irvinghua 谢谢,确实如你所说可能是表设计得不太好

    @a852695 是的,字符类型的修改我一般是 form/json 全部打包传参

    @yuankui 有点这个意思
    progart
        14
    progart  
       2019-07-09 23:22:31 +08:00
    既然 三个开关对应的业务是相互独立不关联的
    那么 在可选择的情况下,当然是三个接口,互相独立,会更合理些,带来的就是接口维护联测工作量上升。
    jackielin
        15
    jackielin  
       2019-07-09 23:36:31 +08:00
    很多情况下面 ui 是要考虑性能问题的,一次性提供一个接口能减少请求,提升性能,这种情况,要么加一个中间层做代理,要么后端就直接改成支持远程调用,比如可以通过一个接口指定要调用 a,b,c 三个 function
    LeeSeoung
        16
    LeeSeoung  
       2019-07-10 09:59:10 +08:00
    当前职责你觉得三个开关可以写在同一个接口,后面某些开关要求加上条件判断联动,你就知道为啥要拆成三个接口去写。。
    alleinmeng
        17
    alleinmeng  
       2019-07-13 09:35:47 +08:00 via Android
    一个整形用低三位做开关变量,做与运算(位运算),判断是哪个开关开的,然后使用策略模式针对不同状态采用不同策略
    hangszhang
        18
    hangszhang  
       2019-07-30 00:20:35 +08:00
    这是 restful 的缺点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1261 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:59 · PVG 07:59 · LAX 15:59 · JFK 18:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.