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

API 设计的时候应该深度优先还是广度优先?

  •  
  •   deepkolos ·
    deepkolos · 2017-12-31 15:37:14 +08:00 · 2396 次点击
    这是一个创建于 2501 天前的主题,其中的信息可能已经有所发展或是发生改变。

    深度优先

        // swipe   相对于 start 的 touchmove
        swipe: {
          x:          Number, // x 分量
          y:          Number, // y 分量
          distance:   Number, // 向量的模
          startWith:  String, // 开始时的方向
          endWith:    String, // 结束时的方向
          direction:  String, // 感觉的确不应该使用 string 来作为状态的标识
        },
    

    广度优先

        // swipe   相对于 start 的 touchmove
        swipeX:          Number, // x 分量
        swipeY:          Number, // y 分量
        swipeDistance:   Number, // 向量的模
        swipeStartWith:  String, // 开始时的方向
        swipeEndWith:    String, // 结束时的方向
        swipeDirection:  String, // 感觉的确不应该使用 string 来作为状态的标识
    

    乱用了广度,深度优先的词, 但是感觉有点小相似 (逃

    API 设计一般会怎么选择, 我见到大多第二种, 那么时候时候应该使用第一种, 什么时候该使用第二种?

    6 条回复    2018-01-01 12:03:24 +08:00
    4ever911
        1
    4ever911  
       2017-12-31 15:45:58 +08:00 via iPad
    whatever doesn't really matter
    TuringGunner
        2
    TuringGunner  
       2017-12-31 16:22:56 +08:00   ❤️ 1
    我一般习惯写成第一种,因为返回的结果中还会有别的字段,全部混在一起太乱了

    除非是查单一 swipe 的 api 才会使用第二种
    wintersun
        3
    wintersun  
       2017-12-31 16:30:38 +08:00   ❤️ 4
    难道不应该是 OO 的理念?
    JSON 格式只是前后台之间的数据传输格式,前端和后台如果都是 OO 编程,那么自然就要采用你所谓的“深度优先”更自然更方便转换!
    romennts
        4
    romennts  
       2017-12-31 21:06:24 +08:00   ❤️ 1
    我觉得很快流行 GraphQL 了~都无所谓,SQL 完事
    winglight2016
        5
    winglight2016  
       2018-01-01 11:54:08 +08:00
    @romennts 大前年( 2015 )刚接触 GraphQL 的时候我就觉得这会是下一代的接口标准,现在嘛~~~
    iyangyuan
        6
    iyangyuan  
       2018-01-01 12:03:24 +08:00 via iPhone
    果断第一种
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3217 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:04 · PVG 08:04 · LAX 16:04 · JFK 19:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.