V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
tottichenzp

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

  •  
  •   tottichenzp · Dec 2, 2014 · 5439 views
    This topic created in 4171 days ago, the information mentioned may be changed or developed.
    随着app功能不断的新增,server端接口也会不停的进行修改、增加,老的接口可能在新的版本中不再使用,但是由于有历史版本的app用户的存在,不能直接修改或者删除老的server端接口,有没有一种好的方式来进行server端接口的版本控制。目前我们的做法是,若是改动不大的server端接口,直接在原有接口上进行扩展修改,若是改动较大,则会使用一个新的接口。
    6 replies    2016-05-25 21:09:16 +08:00
    newtonisaac
        1
    newtonisaac  
       Dec 3, 2014 via iPad
    V1
    V2
    tottichenzp
        2
    tottichenzp  
    OP
       Dec 3, 2014
    @newtonisaac 不知道有没有通用一点的设计,我们在server端增加类似功能的接口时,也是有标注上版本号,但是总是感觉不自在
    semicircle21
        3
    semicircle21  
       Dec 3, 2014
    你们是使用 json 还是 二进制的格式? 如果用 json 的话, 尽量扩展就行了. 这应该还是相对容易的.
    其他的情况, V1,V2 是正解, 而且, 一般都是只新增不删改的, 你看 MS 的 ihtmldocument2,3,4,5,6..
    这就是所谓的历史包袱了.
    tottichenzp
        4
    tottichenzp  
    OP
       Dec 3, 2014
    @semicircle21 用的是json格式 字段扩展确实是相对容易的,但是随着版本的更新,会有一些重复代码的存在,同时又会有一些不在新版本中使用,但是还依旧在老版本中使用的接口。
    newtonisaac
        5
    newtonisaac  
       Dec 3, 2014
    jeffreyning
        6
    jeffreyning  
       May 25, 2016
    移动端 app 后台接口 api 需要分版本同时提出给使用方。
    如果每个接口都重新改类名将造成大量重复代码。
    使用 NHVersion 类库可以解决代码重复问题,
    同时在没有完全一致的版本映射时,
    还可以根据提供的版本号找到最近似的版本进行调用。
    详细说明访问 http://www.jeffreyningsoftware.com/product-nhversion-c.html
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   755 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 68ms · UTC 21:00 · PVG 05:00 · LAX 14:00 · JFK 17:00
    ♥ Do have faith in what you're doing.