不知道各位的公司,后端接口有没有一些规范?
我之前遇到一个后端 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 如果只对接自己的服务器处理貌似没什么问题 不过这么基础的东西都要乱来,是不是真不懂? |
![]() | 8 wysnylc 2020-01-04 13:33:17 +08:00 @viator42 #6 任何时候都不要用布尔,因为经常会让你在 if else 里加 else if,写成 1,2,3 扩展性强 |
![]() | 11 dr1q65MfKFKHnJr6 2020-01-04 14:21:39 +08:00 @jss 保密是系统定义的控制的安全行为,po -> vo 转换过程中控制。 |
![]() | 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 ![]() ![]() |
![]() | 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 ![]() 别追着规范约定吐槽,这样仿佛前端小萌新。。。 要从指标上吐槽 比如:耗时好几秒的接口,居然不搞异步; 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 也没有进行限制。 |