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

关于接口-APP 开发了新版本要保留旧版本 api?

  •  
  •   xoxo419 · 2017-07-12 16:18:40 +08:00 · 5847 次点击
    这是一个创建于 2693 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前因

    对于 API 不太懂, 我们项目管理也不太懂技术.

    项目开发人员 接口 1 人、APP 开发 1 人 用户几乎没有 -_-!

    项目管理人要求

    新版的 APP 开发好,但项目管理人说, 怕旧版的用户不愿意更新. 所以要保留, 那么接口也要保证以的正常.

    怎么做

    方式 1

    1. 将原来的项目复制一份
    2. 增加一个 URL

    方式 2

    增加版本号, 但增加版本号好像也解决不了这个问题

    想说点什么

    你家公司, 开发了新版的 APP, 还要保留旧的?

    26 条回复    2017-07-16 09:48:54 +08:00
    shoaly
        1
    shoaly  
       2017-07-12 16:24:08 +08:00   ❤️ 1
    如果 api 简单, 就用参数 ?v=1 ?v=2 来区分, 写在同一个项目当中即可.
    如果 项目庞大 api 超级多, 就用 git 开多个分支 1.0 2.0 3.0, 分开部署到服务器, 这样你还可以在修改 2.0bug 的时候 同时维护 1.0 版本. 比如现在微软 win7 和 win10...
    icemanpro
        2
    icemanpro  
       2017-07-12 16:26:46 +08:00
    强行更新。
    shoaly
        3
    shoaly  
       2017-07-12 16:28:29 +08:00
    然后 到底应不应该保留 不同版本的 api, 取决于你的客户是不是刚需, 比如你是 12306 或者学校充值电费的 app, 那你可以直接强奸客户, 请时刻追新, 旧版本不再维护.
    如果你的客户是爸爸, 是需要公司花营销费用争取过来的, 比如支付宝, 微信... 这种升级之后旧版本立即失效的话, 那 v2 全球工单系统里面一定很好看... 吃瓜群众妥妥的围观
    artikle
        4
    artikle  
       2017-07-12 16:41:29 +08:00
    我们都是先发布接口,再发布 APP,而且除非业务变化大,否则不会强制更新。
    所以有需求变化时,先考虑能不能改造旧接口,不行就新增接口,比如以前接口 apiV1,现在变成 apiV2,这样可以兼容老版本,新版 APP 调用时就直接调用新接口,也不会有影响;
    artikle
        5
    artikle  
       2017-07-12 16:43:52 +08:00
    而且每次发布新版本一段时间后,要是没有强制更新的话,会去统计旧版本的各个版本的占比是多少,然后将没人用的版本接口废弃掉。强制更新的话,就会将所有旧接口废弃掉
    zjsxwc
        6
    zjsxwc  
       2017-07-12 16:46:01 +08:00
    现在手机 app 不都是在老用户自己都不知道的情况下自动把 app 更新了吗?
    ftexplore
        7
    ftexplore  
       2017-07-12 16:49:58 +08:00
    用版本号会有什么问题?
    paradoxs
        8
    paradoxs  
       2017-07-12 16:51:00 +08:00
    要保留旧版本的 安卓可以强奸用户
    ios 不行
    bombless
        9
    bombless  
       2017-07-12 17:08:39 +08:00
    需要考虑的东西挺多的
    只能说你要是不爱兼容老客户端的话有一万个不兼容的方法
    LancerXin
        10
    LancerXin  
       2017-07-12 17:34:51 +08:00
    如果用户几乎没有的话可以把老 api 淘汰掉.不然然而增加维护成本.
    rozbo
        11
    rozbo  
       2017-07-12 17:39:39 +08:00
    不就是一个 rewrite 就解决的事嘛。。。
    mooncakejs
        12
    mooncakejs  
       2017-07-12 17:41:06 +08:00
    你们做 api 不考虑兼容性的吗? 不兼容的 api 不改名的吗?
    polun
        13
    polun  
       2017-07-12 17:43:58 +08:00
    如果有 50 个版本,不敢想象 50 份代码。。。
    winglight2016
        14
    winglight2016  
       2017-07-12 18:14:18 +08:00
    最简单的办法就是,APP 启动时判断一下当前版本,接口不兼容当前版本就强制他升级
    Lax
        15
    Lax  
       2017-07-12 18:35:57 +08:00 via iPhone
    这道题里的“用户几乎没有”是关键条件,可以不保留。

    但是,你做业务总要定义好以后的升级规则吧,不能每次发布都要讨论一次
    lshero
        16
    lshero  
       2017-07-12 18:39:54 +08:00
    客户端有版本,API 没有版本嘛?
    qiayue
        17
    qiayue  
       2017-07-12 18:46:06 +08:00
    rewrite 大法好
    freefcw
        18
    freefcw  
       2017-07-12 19:22:20 +08:00
    用户几乎没有,亮了~~
    66450146
        19
    66450146  
       2017-07-13 01:17:03 +08:00
    影响这么大的决定你们居然不是用数据支持而是拍脑袋决定的??
    lzhr
        20
    lzhr  
       2017-07-13 02:39:11 +08:00   ❤️ 1
    WhoMercy
        21
    WhoMercy  
       2017-07-13 08:05:48 +08:00 via Android
    1.要不要做?
    除非早期版本,如 A、B 测,正式运营是要保留的;

    2.怎么做?
    系统设计时做到解耦、开闭原则。这样升级接口就不会有太多问题。
    hwwen
        22
    hwwen  
       2017-07-13 09:48:35 +08:00
    @shoaly 我们现在就是用 v1,v2 的方式,然后基本上过一两个月,旧版用户没了就可以关掉旧版的 api 了
    winfirm
        23
    winfirm  
       2017-07-13 10:39:30 +08:00
    你能保证旧版 app 无痛升级到使用新 api 的来吗?不能就应该保留。
    NaVient
        24
    NaVient  
       2017-07-13 11:52:21 +08:00
    用户几乎没有让你没有负担,更新吧
    xoxo419
        25
    xoxo419  
    OP
       2017-07-13 16:43:29 +08:00
    @hwwen v1 v2 是不是相关两份代码呢? 但这两份代码是由版本控制的?
    mingyun
        26
    mingyun  
       2017-07-16 09:48:54 +08:00
    @lzhr 居然还有 QQ 2008
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3517 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 04:45 · PVG 12:45 · LAX 20:45 · JFK 23:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.