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

各位后端大佬,请问这样的后端接口命名正常嘛?

  •  2
     
  •   AlanYoungC · 37 天前 · 5309 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。

    api

    百来个接口都是这样命名的,第一次看到这种写法感觉很懵逼

    第 1 条附言  ·  37 天前
    感谢各位大佬回复,因为刚刚毕业进公司,碰到这样的命名的确实蛋疼了一下。
    有大佬回复说批量生成的,我和后端不熟所以我也不知道是不是批量的。
    75 条回复    2020-10-23 08:54:50 +08:00
    linauror
        1
    linauror   37 天前   ❤️ 1
    有可能使用工具批量生成的,但只要传参出参合理就行啦
    Nicoco
        2
    Nicoco   37 天前
    有点 REST API 那味道,但是没有晚安按照 REST API 来
    Nicoco
        3
    Nicoco   37 天前
    晚安 = 完全
    galikeoy
        4
    galikeoy   37 天前
    @Nicoco #2 不应该吧 delete update 等“动词”放到 url 上面来,应该用请求方法区分
    Jinnn
        5
    Jinnn   37 天前
    我们的后端接口只有 post,最后一个字段和你的差不多
    koal
        6
    koal   37 天前
    我不要下划线,要么驼峰,要么横线链接。
    vision1900
        7
    vision1900   37 天前   ❤️ 13
    REST 规范 URL 里面不应该包含动作,动作应该由 HTTP 方法指定
    更新这种操作应该用 PUT,POST 用于建立一条新的数据
    后端能按时给接口就万岁了,查询接口都有用 POST 的
    刚出校门还有点洁癖,后来想想,当社畜何必拘小节
    PopRain
        8
    PopRain   37 天前
    @vision1900 复杂查询不用 post 用什么呀? 仅仅 get 满足不了需求呀
    vision1900
        9
    vision1900   37 天前
    @PopRain 复杂能有多复杂,100 个参数? get 又不是做不到,query string 我目前还没遇见过什么限制
    chendy
        10
    chendy   37 天前   ❤️ 5
    没啥问题,命名统一,看 url 就能看出是干啥
    复杂查询虽然可以 GET,但是不如 POST 省心省力
    曾经多少有点洁癖,最后还是选择全部 POST+路径里带动词
    REST 洁癖还是留给那些全部大佬又不需要赶工的团队吧
    so1n
        11
    so1n   37 天前   ❤️ 2
    一般 get 代表获取,post 代表上传 /修改 /删除 然后加个标志 因为很多 cdn 只转发 get/post
    daxiaBoy
        12
    daxiaBoy   37 天前
    @vision1900 使用 get,参数多的话,会有丢失的情况。请问你是怎么解决的
    Cuo
        13
    Cuo   37 天前
    @PopRain 复杂查询时可以将 query 丢到 body 里面呀
    coderxy
        14
    coderxy   37 天前
    还可以了。 很难严格的 restful 的,会有一些乱七八糟的问题。 我们就是从 restful 风格后面干脆全部 post,然后 url 上加动词了。
    raaaaaar
        15
    raaaaaar   37 天前 via Android
    还行啊,挺规范的,现实中根本不可能完全按 RESTful 来,只是个参考而已
    putaozhenhaochi
        16
    putaozhenhaochi   37 天前 via Android
    httpe method 已经表示动作了呀
    Kirsk
        17
    Kirsk   37 天前 via Android
    挺好 简约简单
    renmu123
        18
    renmu123   37 天前 via Android
    我觉得挺好的,非常统一
    blurh11E27
        19
    blurh11E27   37 天前
    你发出来 就是有疑问 你不讲讲你的疑问??
    BoarBoar
        20
    BoarBoar   37 天前
    @PopRain 前段时间爬抖音,抖音的 get 里都是一百多个参数
    wangyzj
        21
    wangyzj   37 天前 via iPhone
    虽然不 rest,但挺工整的,又不是不能用
    lin07hui
        22
    lin07hui   37 天前
    工整,方便封装,request[delete|select|insert|update] = (tableName, params) => {...};
    justin2018
        23
    justin2018   37 天前
    多了 我会看眼花 😁
    xalilo
        24
    xalilo   37 天前
    想问一下,要是 /user_role/select 这种有多个 select 怎么写?
    ArJun
        25
    ArJun   37 天前
    可以怎么舒服怎么来,如果一定要按 rs 风格,这种肯定不标准咯
    ochatokori
        26
    ochatokori   37 天前 via Android
    @daxiaBoy #12 最短的 IE 限制 url 长度也能有 2048 字节,你的是什么请求要超过这个长度。。。
    suzic
        27
    suzic   37 天前 via Android
    我是前端,完全可以接受。只要一个项目坐下来接口命名都是有规律的,都能接受
    ochatokori
        28
    ochatokori   37 天前 via Android
    @daxiaBoy #12 你该不会是没有 urlencode 导致 url 被截断了吧
    Seanfuck
        29
    Seanfuck   37 天前 via iPhone
    这种挺好的,delete 也 post 就更好了,闭着眼都能写,有操作数据库的感觉。
    otakustay
        30
    otakustay   37 天前
    非常常见的做法,也许理论上不完美,但肯定是 work 的,而且应该会完美 work 的。没有理论洁癖的就乖乖用着,你说它能产生什么不好的事情么?是影响了产品质量了还是影响用户体验了还是影响开发效率了还是影响系统性能了……这么有规律的接口甚至连未来升级 GraphQL 都不会影响
    otakustay
        31
    otakustay   37 天前
    @ochatokori URL 参数多确实是很容易被截断的,有一段时期的 nginx 默认配置就是 2048 截断,然后现在网络上有大量的中间代理服务器还是这个配置,你永远不知道用户的请求到你的服务器会经过哪些代理,这些代理会不会干出啥傻事来
    至于为什么 2048 不够……多选 1000 行批量操作
    xuanbg
        32
    xuanbg   37 天前
    不是纯 POST,这最后一截就不需要了吧……
    zsdroid
        33
    zsdroid   37 天前
    restful man 已经饥渴难耐
    ltfree
        34
    ltfree   37 天前
    没啥毛病。。。
    Jooooooooo
        35
    Jooooooooo   37 天前
    这么清晰你还要啥
    leishi1313
        36
    leishi1313   37 天前 via Android
    哦写成这样那为什么不用 graphql 呢
    Bromine0x23
        37
    Bromine0x23   37 天前
    RESTful API 的路径不是不能有动词啊,重要的是资源的抽象。当 HTTP 方法不能完全表达动作内容时,加在路径上也没啥问题,比如 `POST /resources/<id>/<action>`
    当然楼主给的接口确实也不是 RESTful API
    Mitt
        38
    Mitt   37 天前
    之前也特别纠结复杂查询包括搜索时的参数问题,因为 REST 的话应该是 GET,后来网上看到有人的做法是 POST /resource/search, 感觉这点也是能接受的,所以其实能在已有的标准上形成一个自己的标准就好,目的是统一好理解,除此之外任何做法都是正确的
    speedofstephen
        39
    speedofstephen   37 天前
    restiful 本来就是 Style, 不是 Spec
    HenryWang0723
        40
    HenryWang0723   37 天前
    get post 就完事了
    Geekerstar
        41
    Geekerstar   37 天前
    你见过拼音首字母缩写+简单英文的 URL 么
    mirrorpen
        42
    mirrorpen   37 天前
    挺清晰的,一看就懂没毛病..但是还是直接一个 resource 简洁舒服
    goodboy95
        43
    goodboy95   37 天前
    话说,我这边是后端 controller 层整合数据的,前端一般只管展示,第一次看到这种接口确实蒙了一下
    Yano
        44
    Yano   37 天前
    其实有规律就好了,这个能看出规律,知道是干啥的就行了。。。
    fangcan
        45
    fangcan   37 天前
    我觉得挺好的
    MrUser
        46
    MrUser   37 天前
    不都是这样吗?



    看看我们后端的,貌似有不正常的地方?
    ytll21
        47
    ytll21   37 天前
    脱裤子放屁,不好意思,我就是这么粗俗
    jackrelative
        48
    jackrelative   37 天前
    不正确,不正常,但是常见。

    名称是抄的 restful 规范,但是 restful 是不含 delete,insert,get,update 这类词的,http 头的 action 指定的。

    个人猜测,这是批量生成的接口。
    abobobo
        49
    abobobo   37 天前
    正常,风格统一,容易分类,一眼就能看出是做什么的,因为我都是用 post 跟 get,所以接口里都会有一个“操作”的标识
    newmlp
        50
    newmlp   37 天前
    又不是不能用
    jwchen
        51
    jwchen   37 天前
    只要统一就行
    这样显示点儿也没啥不好的。。
    xrr2016
        52
    xrr2016   37 天前
    丑...
    xionger
        53
    xionger   37 天前
    这规范 那规范 没啥用
    a132811
        54
    a132811   37 天前
    这样命名挺工整统一的,不过只能应对简单场景 api 。

    restful api 同样只能应对普通 crud 。各种关系组合查询都难以应对。

    @vision1900 GET 请求也是有限制的,第一个是长度限制,第二个不可以传结构化数据比如 application/json
    cszchen
        55
    cszchen   36 天前 via Android
    这接口挺好的,虽然不是 restfull 规范,但也很规范了,而且一看就知道干啥的
    strongcoder
        56
    strongcoder   36 天前
    我们让后台全部给 POST 接口 这样方便
    tairan2006
        57
    tairan2006   36 天前
    你这还不如都用 post 呢,偏偏 delete 用 delete 就很蛋疼
    Felldeadbird
        58
    Felldeadbird   36 天前
    挺正常的接口。从 URL 可以知道干啥了。
    Lemeng
        59
    Lemeng   36 天前
    正常吧
    Wuxj
        60
    Wuxj   36 天前
    如果后端的接口没有指定 get 、post...的话用 swagger 生成就是这种的
    Wuxj
        61
    Wuxj   36 天前
    #60 看错了。。
    wr516516
        62
    wr516516   36 天前
    这中间的是表名吧
    gadsavesme
        63
    gadsavesme   36 天前
    restful 只是一种风格,又不是前后端接口交互的规范,只要自己人约定好了,没有问题就可以了。哪那么多高潮的。
    unco020511
        64
    unco020511   36 天前
    如果按照 restful 风格的话,一般是不出现动词的,path 指向需要操作的资源,通过 mthod 来指定动作.不过这也只是一种风格,倒也不必强行去套
    unco020511
        65
    unco020511   36 天前
    @newmlp 这话适用于大部分类似场景,哈哈
    SuperXRay
        66
    SuperXRay   36 天前
    不能在正常了,少见多怪
    keepcleargas
        67
    keepcleargas   36 天前
    把 insert/update/select/delete 去掉,同事 ${resource_id} 到路径中 应该会规范一些。
    wc951
        68
    wc951   36 天前 via Android
    即使 get 请求也可以传 body 的,没看 elastic search 就是这么干的吗
    lewis89
        69
    lewis89   36 天前
    @vision1900 #7 又是那些教条,实际上后台的接口 含义根本不可能是那几个动作能说清楚的
    newmlp
        70
    newmlp   36 天前
    @unco020511 本来就是啊,程序是用来用的,又不是打官司,哪有那么多规矩
    vision1900
        71
    vision1900   36 天前
    @lewis89 大佬说的对
    ruzztok
        72
    ruzztok   36 天前
    少挑毛病,把事情做好,除非有什么大问题
    你想按照规范,就来主导这件事情,不是别人做好之后怀疑规不规范
    unco020511
        73
    unco020511   36 天前
    @wc951 这个不敢苟同,如果按照 http 协议,get 是没有 body 的,get 是用来获取数据的,为什么要有 body
    baiyi
        74
    baiyi   36 天前
    @wc951 #68 这个就不是接口设计风格的问题了,连 HTTP 协议本身都不遵守了,那还是换个协议吧
    elintwenty
        75
    elintwenty   36 天前
    难道不是你们用的开心就可以吗?这种事情没有对错,只有倾向。但是确实不是严格的 restful 风格,然而遵循严格的 restful 风格付出的成本相对比较高,一般业务还是难以坚持下去的
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2713 人在线   最高记录 5268   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 05:38 · PVG 13:38 · LAX 21:38 · JFK 00:38
    ♥ Do have faith in what you're doing.