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

为 app 提供服务的 server 端接口,如何做良好的设计,支持不断新增新的功能又能兼顾老的接口能继续正常使用?

  •  
  •   tottichenzp · 2014-12-02 23:51:26 +08:00 · 4776 次点击
    这是一个创建于 3674 天前的主题,其中的信息可能已经有所发展或是发生改变。
    随着app功能不断的新增,server端接口也会不停的进行修改、增加,老的接口可能在新的版本中不再使用,但是由于有历史版本的app用户的存在,不能直接修改或者删除老的server端接口,有没有一种好的方式来进行server端接口的版本控制。目前我们的做法是,若是改动不大的server端接口,直接在原有接口上进行扩展修改,若是改动较大,则会使用一个新的接口。
    6 条回复    2016-05-25 21:09:16 +08:00
    newtonisaac
        1
    newtonisaac  
       2014-12-03 07:53:41 +08:00 via iPad
    V1
    V2
    tottichenzp
        2
    tottichenzp  
    OP
       2014-12-03 10:33:00 +08:00
    @newtonisaac 不知道有没有通用一点的设计,我们在server端增加类似功能的接口时,也是有标注上版本号,但是总是感觉不自在
    semicircle21
        3
    semicircle21  
       2014-12-03 11:54:22 +08:00
    你们是使用 json 还是 二进制的格式? 如果用 json 的话, 尽量扩展就行了. 这应该还是相对容易的.
    其他的情况, V1,V2 是正解, 而且, 一般都是只新增不删改的, 你看 MS 的 ihtmldocument2,3,4,5,6..
    这就是所谓的历史包袱了.
    tottichenzp
        4
    tottichenzp  
    OP
       2014-12-03 13:06:57 +08:00
    @semicircle21 用的是json格式 字段扩展确实是相对容易的,但是随着版本的更新,会有一些重复代码的存在,同时又会有一些不在新版本中使用,但是还依旧在老版本中使用的接口。
    newtonisaac
        5
    newtonisaac  
       2014-12-03 13:24:11 +08:00
    jeffreyning
        6
    jeffreyning  
       2016-05-25 21:09:16 +08:00
    移动端 app 后台接口 api 需要分版本同时提出给使用方。
    如果每个接口都重新改类名将造成大量重复代码。
    使用 NHVersion 类库可以解决代码重复问题,
    同时在没有完全一致的版本映射时,
    还可以根据提供的版本号找到最近似的版本进行调用。
    详细说明访问 http://www.jeffreyningsoftware.com/product-nhversion-c.html
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1016 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.