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

后端接口中连续多个路径参数,这样设计接口是不是不太好

  •  1
     
  •   darknoll · 2021-06-01 11:43:22 +08:00 · 2287 次点击
    这是一个创建于 1050 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如 api/appX/{路径参数 1}/{路径参数 2}/{路径参数 3}

    13 条回复    2021-06-01 17:45:39 +08:00
    zoharSoul
        1
    zoharSoul  
       2021-06-01 11:52:42 +08:00
    github api 好像就有这种.
    SingeeKing
        2
    SingeeKing  
       2021-06-01 13:06:52 +08:00
    连续三个太奇怪,但

    api/appX/{路径参数 1}/描述 2/{路径参数 2}/ 这种还是挺常见的
    CodeCodeStudy
        3
    CodeCodeStudy  
       2021-06-01 13:07:57 +08:00
    不好,非常不直观
    no1xsyzy
        4
    no1xsyzy  
       2021-06-01 13:18:06 +08:00
    如果你有很明确的层级关系,这样一点问题都没有。但如果没有层级关系,这样就是在降低可维护性。

    甚至还见过
    .../{参数 1}/{参数 2}

    .../{参数 1}/{参数 2}/False
    是两个完全不同的接口,两个返回 json 字段重合的只有一个 id
    mikulch
        5
    mikulch  
       2021-06-01 13:26:21 +08:00
    看你多大的项目了。一般的项目不要要求太严格了。。
    Hstar
        6
    Hstar  
       2021-06-01 13:27:32 +08:00
    如果你的路径参数是语义化的,如 api/appX/earth/asia/china,我觉得还行,如果是 api/appX/3/5/7,那就太垃圾了
    NotFoundEgg
        7
    NotFoundEgg  
       2021-06-01 14:01:03 +08:00
    连续 2 个 我感觉看着都很难受
    KarmaWu
        8
    KarmaWu  
       2021-06-01 14:33:38 +08:00
    改造成 api/appX?param1=xxx&param2=xxx 不好么
    Rache1
        9
    Rache1  
       2021-06-01 15:21:31 +08:00
    一般 rest 风格,最好参数前面要有实体名字的,如果是 filter 参数的话,还是建议使用 GET 或者 POST 的 payload 传递,而不是这种强行拼接
    IvanLi127
        10
    IvanLi127  
       2021-06-01 15:28:59 +08:00
    具体问题具体分析,得看这参数有没有层级关系,没有的话大概率不合适,有的话那还成,当然。。。能一步到位的话应该考虑直接用最后一个参数来获取数据。
    chinvo
        11
    chinvo  
       2021-06-01 15:35:37 +08:00 via iPhone
    filter 不用路径参数

    别把伪静态那套风格带进 rest
    Vitta
        12
    Vitta  
       2021-06-01 17:36:53 +08:00
    这种感觉好难受
    Symo
        13
    Symo  
       2021-06-01 17:45:39 +08:00
    事后写 access log 正则的时候会非常麻烦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5585 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 08:31 · PVG 16:31 · LAX 01:31 · JFK 04:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.