不知道各位的公司,后端接口有没有一些规范?
我之前遇到一个后端 RD,定义 GET 请求,但是,需要在 body 里面添加数据,感觉特别怪异?这种为啥不直接用 post,各位觉得呢?
1
Pastsong 2020-01-04 11:09:14 +08:00 via Android
get 传 body 是未定义行为,很多服务器是直接扔掉的
|
2
a1056151086 2020-01-04 11:11:06 +08:00 via Android
我以前试过前端 get 传 body 好像后端会报错还是接收不到的吧?
|
3
loading 2020-01-04 11:26:52 +08:00
如果还没开发,按 restful api 进行一般性规范还是可以的,可以参考一下。
对于已经开发完毕,或者第三方的,只要有文档都可以的,没什么问题。 |
4
sgiyy 2020-01-04 11:52:07 +08:00
今年最想吐槽的是,我跟后端说保存数据和修改的时候咱们用 post 传递数据,然而一个 team 里 4 个后端都来跟我说 POST 怎么拿不到数据,我还搜索了一下 Java 例子发给他们,合着他们一直就会用 GET 啊 😱。
|
5
wangyzj 2020-01-04 12:21:05 +08:00
感觉一种一类迷糊加密行为呢
|
6
viator42 2020-01-04 12:35:55 +08:00 via Android
性别用布尔值,肯定不对但常识上来说又没有什么不对
|
7
rainbowchou 2020-01-04 12:49:46 +08:00
如果只对接自己的服务器处理貌似没什么问题
不过这么基础的东西都要乱来,是不是真不懂? |
8
wysnylc 2020-01-04 13:33:17 +08:00
@viator42 #6 任何时候都不要用布尔,因为经常会让你在 if else 里加 else if,写成 1,2,3 扩展性强
|
12
guyeu 2020-01-04 15:56:15 +08:00
|
13
skinny 2020-01-04 16:02:51 +08:00
用 GET 发送 BODY 数据的就别提规范了……
|
14
ZXCDFGTYU 2020-01-04 16:04:39 +08:00 2
|
15
tt67wq 2020-01-04 16:43:10 +08:00
你们这后端也太蔡了吧
|
16
xjmroot 2020-01-04 16:46:00 +08:00 via iPhone
limit 参数可以填无穷大
|
18
autulin 2020-01-04 17:08:51 +08:00 via iPhone
规范的最终目的是实现众所周知的统一,es 的 http 查询 dsl 从 body 带为什么大家不喷,只要同一个团体有一定的统一就好了
|
19
JJstyle 2020-01-04 17:11:06 +08:00 via iPhone
bool 看着符合语义,但是经常遇到后面要加一个值过来。
|
20
gitjavascript 2020-01-04 17:21:11 +08:00
直接给后端说不就好了,post 传 query 我能忍,get 传 body 是几个意思
|
21
hantsy 2020-01-04 17:28:13 +08:00
头一回听说用 Get Body 传数据。不讨论这个了,又是 REST 设计问题,月经了。
|
22
xianyu0 2020-01-04 17:31:14 +08:00
get 请求带 body,从 http 协议的角度讲,并没有不规范吧,http 没规定 get 请求不能带 body 呀。
elasticsearch 的查询,不就是 get 请求带 body 吗? 只不过很少这样用,而且有些软件可能不支持而已。 当然,我是反对 get 请求带 body 的……另外,后台接口难道还限制你只能用 get ?不给用 post ? |
23
ceet 2020-01-04 17:34:30 +08:00
查询的接口是 post。 请求的数据是 sql。直接传 sql 给后台。 后台做了过滤而已。美名曰提高效率。
|
25
xiaoyt0909 2020-01-04 18:16:10 +08:00
@xianyu0 后端接口是可以限制请求方式的,一般除了查询用 get,其它的都用 post
|
27
xianyu0 2020-01-04 18:32:04 +08:00
@xiaoyt0909 我当然知道可以限制,我就是做后台的……我的意思是,后台的某个接口一般会同时允许 get 和 post,不会只允许 get 不允许 post,最多也只是允许 post 不允许 get (出于某些限制,比如提交数据比较多,或者不想参数出现在 url 里、等等)
|
28
cszchen 2020-01-04 18:37:22 +08:00
@xianyu0 restful 的规范就是要么只能 get,要么只能 post,一个接口只干一件事,你全搞在一起不仅不规范,维护也难啊
|
29
xianyu0 2020-01-04 18:49:33 +08:00
@cszchen 一个接口同时支持 get 和 post,怎么就难维护了……后台处理请求的时候,难道会区分这个请求是 get 还是 post ?
|
31
zhizunzz 2020-01-04 19:02:19 +08:00
php 老掉牙版本 页面 input 的 name 是数字 1,2,3,后台 register_globals=on
一脸得意的告诉我这么办$tmp="1",$var=$$tmp, 我他妈照办了 |
33
iRiven 2020-01-04 19:04:47 +08:00
主板上面的 VGA 可以吐槽吗
|
37
xianyu0 2020-01-04 20:42:00 +08:00
@LinJunzhu 没错,我的绝大部分接口既允许 get,也允许 post。限制一个接口只允许 get 或只允许 post 有什么好处? query string 从 url 里取 和 从 request body 里取 有任何区别吗?
|
38
darknoll 2020-01-04 20:58:09 +08:00 via Android
get 带 body,长见识了
|
39
a852695 2020-01-04 21:41:53 +08:00
看到过有后端传文件接口,把文件内容写 query string 的,url 直接被 ngx 拦了
|
40
Varobjs 2020-01-04 22:00:20 +08:00
吐槽下很多大公司的接口文档
有的写着 GET/POST 实际只能 POST 有的写着 返回 xx 实际从来不返回 全靠猜 |
41
xuanbg 2020-01-04 22:24:43 +08:00
我司全用 POST,无他,简单。返回有统一的格式,成功取 data,失败输出 message,只有很少情况需要根据 code 处理。
只是 url 乱七八糟的没眼看…… |
42
dodo2012 2020-01-04 22:26:27 +08:00
一直 rest 规范来的,可能 和用了很多年 rails 有关,习惯了
|
43
DavidNineRoc 2020-01-05 09:12:20 +08:00
@xianyu0 当然区分,GET:/users 获取用户列表, POST:/users 创建用户 参考 RESTFul
|
44
fewok 2020-01-05 11:47:05 +08:00 1
别追着规范约定吐槽,这样仿佛前端小萌新。。。
要从指标上吐槽 比如:耗时好几秒的接口,居然不搞异步; TP50 和 TP90 差别这么大; QPS 超 1 就异常;接口性能不清楚就使用。 要从数据上吐槽 比如:几百 KB 的数据居然不 gzip 下;同一字段,即使字符串,也是对象; json 的 key 居然是变量。 要从使用上吐槽 比如:没有幕等;没有防重;没有鉴权;还能日常暂停使用(特指各大银行+火车)。 |
45
Torpedo 2020-01-05 12:46:44 +08:00
get 可以发 body,但是浏览器不支持。
你们后端是不是直接用了 spring,方便就直接 get body 里取数据了 |
46
luozic 2020-01-05 15:13:01 +08:00 via iPhone
最基本的幂等性不支持的接口见识过没有。
|
48
FightForFreedom 2020-01-05 17:37:28 +08:00
@LinJunzhu 可能是既让 restful 警察爽到,又照顾了对 rest 没啥热衷的普罗大众?
|
49
zjiecode OP @DavidNineRoc 对,我也比较喜欢这种 ,DELETE:/users 删除用户, PUT:/users 修改用户
|
50
mysunshinedreams 2020-01-06 16:12:02 +08:00
楼上的,get 为什么不能用 body,HTTP 规范并没有限制,限制的是浏览器和网关,Spring 也没有进行限制。
|