V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jasongaoj
V2EX  ›  程序员

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

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

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