各位后端大佬,请问这样的后端接口命名正常嘛? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
AlanYoungC
V2EX    程序员

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

  AlanYoungC 2020 年 10 月 21 日 8755 次点击
这是一个创建于 1931 天前的主题,其中的信息可能已经有所发展或是发生改变。

api

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

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



看看我们后端的,貌似有不正常的地方?
ytll21
    47
ytll21  
   2020 年 10 月 22 日
脱裤子放屁,不好意思,我就是这么粗俗
djoiwhud
    48
djoiwhud  
   2020 年 10 月 22 日
不正确,不正常,但是常见。

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

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

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

@vision1900 GET 请求也是有限制的,第一个是长度限制,第二个不可以传结构化数据比如 application/json
cszchen
    55
cszchen  
   2020 年 10 月 22 日 via Android
这接口挺好的,虽然不是 restfull 规范,但也很规范了,而且一看就知道干啥的
strongcoder
    56
strongcoder  
   2020 年 10 月 22 日
我们让后台全部给 POST 接口 这样方便
tairan2006
    57
tairan2006  
   2020 年 10 月 22 日
你这还不如都用 post 呢,偏偏 delete 用 delete 就很蛋疼
Felldeadbird
    58
Felldeadbird  
   2020 年 10 月 22 日
挺正常的接口。从 URL 可以知道干啥了。
Lemeng
    59
Lemeng  
   2020 年 10 月 22 日
正常吧
Wuxj
    60
Wuxj  
   2020 年 10 月 22 日
如果后端的接口没有指定 get 、post...的话用 swagger 生成就是这种的
Wuxj
    61
Wuxj  
   2020 年 10 月 22 日
#60 看错了。。
wr516516
    62
wr516516  
   2020 年 10 月 22 日
这中间的是表名吧
gadsavesme
    63
gadsavesme  
   2020 年 10 月 22 日
restful 只是一种风格,又不是前后端接口交互的规范,只要自己人约定好了,没有问题就可以了。哪那么多高潮的。
unco020511
    64
unco020511  
   2020 年 10 月 22 日
如果按照 restful 风格的话,一般是不出现动词的,path 指向需要操作的资源,通过 mthod 来指定动作.不过这也只是一种风格,倒也不必强行去套
unco020511
    65
unco020511  
   2020 年 10 月 22 日
@newmlp 这话适用于大部分类似场景,哈哈
SuperXRay
    66
SuperXRay  
   2020 年 10 月 22 日
不能在正常了,少见多怪
keepcleargas
    67
keepcleargas  
   2020 年 10 月 22 日
把 insert/update/select/delete 去掉,同事 ${resource_id} 到路径中 应该会规范一些。
wc951
    68
wc951  
   2020 年 10 月 22 日 via Android
即使 get 请求也可以传 body 的,没看 elastic search 就是这么干的吗
lewis89
    69
lewis89  
   2020 年 10 月 22 日
@vision1900 #7 又是那些教条,实际上后台的接口 含义根本不可能是那几个动作能说清楚的
newmlp
    70
newmlp  
   2020 年 10 月 22 日
@unco020511 本来就是啊,程序是用来用的,又不是打官司,哪有那么多规矩
vision1900
    71
vision1900  
   2020 年 10 月 22 日
@lewis89 大佬说的对
ruzztok
    72
ruzztok  
   2020 年 10 月 22 日
少挑毛病,把事情做好,除非有什么大问题
你想按照规范,就来主导这件事情,不是别人做好之后怀疑规不规范
unco020511
    73
unco020511  
   2020 年 10 月 22 日
@wc951 这个不敢苟同,如果按照 http 协议,get 是没有 body 的,get 是用来获取数据的,为什么要有 body
baiyi
    74
baiyi  
   2020 年 10 月 22 日
@wc951 #68 这个就不是接口设计风格的问题了,连 HTTP 协议本身都不遵守了,那还是换个协议吧
elintwenty
    75
elintwenty  
   2020 年 10 月 23 日
难道不是你们用的开心就可以吗?这种事情没有对错,只有倾向。但是确实不是严格的 restful 风格,然而遵循严格的 restful 风格付出的成本相对比较高,一般业务还是难以坚持下去的
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1903 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 33ms UTC 00:25 PVG 08:25 LAX 16:25 JFK 19:25
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86