1
murmur 2022 年 8 月 15 日
get 方法的 post+json 写法,因为写 www.example.com/api?method=group/list ,首先参数的斜杠要转义有些低端开发是不知道的,徒增烦恼,索性全扔到 post 了,get 部分干干净净什么都不留
全 post 挺好的,能避开很多麻烦 |
2
murmur 2022 年 8 月 15 日
如果他有框架做网关或者自己实现了单入口 /group/list 和 method=group/list ,本质上没区别
|
3
thetbw 2022 年 8 月 15 日
支付宝的接口好像就这样,还有一些移动的接口。那些 to b 的这种蛮多,也不知道为啥
|
4
dzdh 2022 年 8 月 15 日
支付宝:
https://openapi.alipay.com/gateway.do?method=xxx.xxx.xxx&biz_content=json 阿里云: https://{PRODUCT}.console.aliyun.com/data/api.json?action=ApiName |
5
dzdh 2022 年 8 月 15 日 阿里基于 springcloudgateway 那一套搞的
|
6
murmur 2022 年 8 月 15 日
@thetbw 多少年前的,大概是 php 年代就开始用的单一入口,那个时候还没有拦截器这么先进的东西,框架页不完善,要自己做一个入口,权限什么的做一做然后分发到业务下,所以路由部分是参数不是 url
|
7
zhuweiyou 2022 年 8 月 15 日
websocket 一般这么玩.
|
8
murmur 2022 年 8 月 15 日
@dzdh 你仔细看,支付宝的页面是做了 IE6 的兼容的,这系统如果是 spring gateway ,除非是我 java 历史需要恶补,不是太超前了
|
9
Onlyil 2022 年 8 月 15 日
网关层统一接入吧,之前公司也是这样
|
10
brader 2022 年 8 月 15 日
类似这种风格,我上次接入 ETH 的 JSON-RPC API 的时候遇到过,https://ethereum.org/en/developers/docs/apis/json-rpc/
感觉没有什么吧,一样用。 然后关于你说的全部请求使用 POST ,其实大部分请求都可以使用 post ,但是有一小部分请求你不得不使用 get ,就是那种需要通过 url 传递参数的场景,比如你分享一个链接给别人之类的 |
11
Tink PRO 有这样的,以前我们项目就是这么写的
|
12
westoy 2022 年 8 月 15 日
介于 web rpc 和 rest 中间的一种风格
|
13
showmethetalk 2022 年 8 月 15 日
@murmur #1 post 不是幂等的,不方便缓存,这样是否不太好?
|
14
eason1874 2022 年 8 月 15 日
十几年前,虚拟主机时代,CMS 都这样,现在属于是文艺复兴了。不同的是以前没有网关,现在是有网关,而且是可编程网关
|
15
ChiangKaishek OP @murmur #2 感觉这样好像也没给前后端带来啥好处, 接口可读性感觉还差了.
|
18
dcsuibian 2022 年 8 月 15 日 别研究了,这有个鸡儿好处,就是在重新发明 http 罢了
这个 method 明显是拿来做请求分发的——正常直接用 url 就好了,offset 、pageSize 其实用 get 放查询参数里更好。 设计这个的人可能不太了解 http 、restful ,可能是个人喜好,可能是从老师傅那里抄过来的等等。 不是什么大事,毕竟谁还没重复造过轮子呢。 |
19
ChiangKaishek OP @Tink 啥情况下要这样写接口啊?
|
20
bk201 2022 年 8 月 15 日
方便拦截处理吧,放在 path 部分可能不能严格要求格式。
|
21
fuxkcsdn 2022 年 8 月 15 日
soap 接口很多这样的,这种好处是不用费劲给接口起名,对接起来也挺方便的
以前接携程一个接口,所有的接口名都是 UUID ,具体啥功能看说明文档 |
22
sunhelter 2022 年 8 月 15 日
在 RESTful 概念没出来的时候的写法
|
24
muzuiget 2022 年 8 月 15 日 这是很正常也很流行的用法,HTTP 无非就是一个“容器”协议而已。
序列化成 JSON ,传递的是结构化带类型的参数,就像你图中那个 offset 是一个数字类型,order 是一个字典(复杂数据类型),服务端收到一个 JSON 字符串,可以反序列化直接使用,甚至可以用 JSON Schema 这种东西直接检查数据有效性。 你想想如果如果用 get 方法你要怎么传这种参数?是不是要一个个参数取出来?取出来的是字符串,还要手动类型强制转换。 把 HTTP 当成“容器”协议,以后添加和转换协议也很方便,比如 WebSocket/Socket ,只需要加一层简单的“转换器”。甚至可以加密,即防止别人用 DevTools 来逆向工程,好处多多。 所以只要你的业务和 HTTP 没什么强关系,用这种方法更好。 |
25
muzuiget 2022 年 8 月 15 日 @murmur 我也是 restful 黑,restful 不 restful 都一股玄学味道,有那个功夫学习 restful 的理念,早用 JSON 这种东西搞定下班了。
|
26
sivacohan PRO rpc 风格
可以看一下 soap ,xml-rpc |
27
wanguorui123 2022 年 8 月 15 日
JSON-RPC 协议
|
28
dcsuibian 2022 年 8 月 15 日
@murmur Restful 除了设计难点没看出有啥副作用。
put 、delete 、Restful 也不是重点,重点是统一。 没有 restful ,接口设计只会更加千奇百怪,你永远不知道合作的程序员用的是怎样的脑回路。。。 |
29
dusu 2022 年 8 月 16 日 via iPhone
对于 waf 或者基于 accesslog 做统计的系统完全就是灾难
|
30
nothingistrue 2022 年 8 月 16 日 去 HTTP 纯 Application Interface 风格的接口,好处是完全去掉了 HTTP 的影响,缺点是 HTTP 的好处——Header 、缓存、通用等——一个也用不了。
|
32
chocotan 2022 年 8 月 16 日
就是网关层的统一入口
|
33
Envov 2022 年 8 月 16 日 via iPhone
我们云 api 也这样,感觉没有什么好处也没什么坏处
|