• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jasongaoj
V2EX  ›  程序员

请教各位大佬接口版本控制的问题

  •  
  •   jasongaoj · Aug 7, 2020 · 4152 views
    This topic created in 2280 days ago, the information mentioned may be changed or developed.

    对接 app 的接口,一个 app 有新老很多个版本,安卓甚至还有很多个渠道。例如一个商城列表,新( 1.1.1 )老( 1.1.0 )版本需要下发的不一样,这个时候用 if else 控制,过不了多久又有新( 1.1.2 )的版本需要上线,此时需要三个版本下发的列表不一样,还用 if else,这样的代码,久了之后,再看的话会跟吃屎一样难受。在考虑 app 不强制更新的情况下,百度了一圈发现没有什么好办法,请问大佬们有什么好的办法处理这种情况?

    16 replies  •  2020-08-08 11:32:05 +08:00
    frandy
    frandy
    Aug 7, 2020
    1
    微软都头疼这种问题
    la2la
    la2la
    Aug 7, 2020
    2
    多个 if else 能解决的,嵌套不是特别深的就这样解决呗,只要代码封装的好,逻辑很清晰的
    Rwing
    Rwing
    Aug 7, 2020
    3
    可以考虑多版本共存啊,就是老的不下线,通过路由来区分
    lazyfighter
    lazyfighter
    Aug 7, 2020
    4
    接口向后兼容
    Nostalgiaaaa
    Nostalgiaaaa
    Aug 7, 2020
    5
    shop_list_v1
    shop_list_v2
    然后看流量,小于某个阈值直接返回请升级这种文案。
    learningman
    learningman
    Aug 7, 2020
    6
    屎嘛,偶尔吃吃不影响身体健康
    jake361
    jake361
    Aug 7, 2020
    7
    @Rwing 可以考虑用新的路由来区分。 +1 。

    新的版本,升级新的路由,我认为更加妥当啊, 当然需要客户端的配合了。
    jasongaoj
    jasongaoj
    OP
    Aug 7, 2020
    8
    @Rwing 路由确实可以解决,当一个功能版本不同通过多个接口返回,可能会增加维护的成本,不过如果管理的好的话,也是一种不错的方案
    jasongaoj
    jasongaoj
    OP
    Aug 7, 2020
    9
    @Nostalgiaaaa 是像你这样做的,但是免不了对 version 做 if else
    jasongaoj
    jasongaoj
    OP
    Aug 7, 2020
    10
    @la2la if else 啥问题都能解决,关键在于是否包装的好 /(ㄒoㄒ)/~~
    jasongaoj
    jasongaoj
    OP
    Aug 7, 2020
    11
    @learningman 经常吃还是挺影响的
    jasongaoj
    jasongaoj
    OP
    Aug 7, 2020
    12
    @frandy 突然舒服了很多,谢谢你
    masker
    masker
    Aug 7, 2020 via Android
    13
    客户端请求头加个 ver ?
    smilekung
    smilekung
    Aug 7, 2020
    14
    客户端请求时携带自身版本,后端可以在网关处理路由到不同的版本服务上,或者做一个专门的版本控制服务,后端编码处理不同的版本,之前我们一个服务里能嵌 4-5 个版本控制,变动频繁的就 app 内嵌 h5 吧 还能热更
    yscg
    yscg
    Aug 8, 2020
    15
    了解一下 GraphQL https://graphql.cn/
    xuanbg
    xuanbg
    Aug 8, 2020
    16
    路径加版本号。譬如 userapi/v1.0.0/users 。要新老版本同时存在的话,再加个接口:userapi/v1.0.1/users 。新的 APP 调用 userapi/v1.0.1/users 就行了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1428 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 18:24 · PVG 02:24 · LAX 10:24 · JFK 13:24
    ♥ Do have faith in what you're doing.