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

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

  •  2
     
  •   AlanYoungC · 2020-10-21 17:18:56 +08:00 · 7999 次点击
    这是一个创建于 1495 天前的主题,其中的信息可能已经有所发展或是发生改变。

    api

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

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



    看看我们后端的,貌似有不正常的地方?
    ytll21
        47
    ytll21  
       2020-10-22 11:17:12 +08:00
    脱裤子放屁,不好意思,我就是这么粗俗
    djoiwhud
        48
    djoiwhud  
       2020-10-22 11:23:00 +08:00
    不正确,不正常,但是常见。

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

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

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

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