这是个啥风格的 api 啊?

2022-08-15 16:54:35 +08:00
 ChiangKaishek

整个就一个 /api 接口, 请求方法全写在负载里面 这样写 api 有啥好处吗?

5991 次点击
所在节点    Python
33 条回复
murmur
2022-08-15 16:57:25 +08:00
get 方法的 post+json 写法,因为写 www.example.com/api?method=group/list ,首先参数的斜杠要转义有些低端开发是不知道的,徒增烦恼,索性全扔到 post 了,get 部分干干净净什么都不留

全 post 挺好的,能避开很多麻烦
murmur
2022-08-15 16:58:49 +08:00
如果他有框架做网关或者自己实现了单入口 /group/list 和 method=group/list ,本质上没区别
thetbw
2022-08-15 16:58:55 +08:00
支付宝的接口好像就这样,还有一些移动的接口。那些 to b 的这种蛮多,也不知道为啥
dzdh
2022-08-15 16:59:44 +08:00
支付宝:

https://openapi.alipay.com/gateway.do?method=xxx.xxx.xxx&biz_content=json

阿里云:

https://{PRODUCT}.console.aliyun.com/data/api.json?action=ApiName
dzdh
2022-08-15 17:00:14 +08:00
阿里基于 springcloudgateway 那一套搞的
murmur
2022-08-15 17:00:31 +08:00
@thetbw 多少年前的,大概是 php 年代就开始用的单一入口,那个时候还没有拦截器这么先进的东西,框架页不完善,要自己做一个入口,权限什么的做一做然后分发到业务下,所以路由部分是参数不是 url
zhuweiyou
2022-08-15 17:01:29 +08:00
websocket 一般这么玩.
murmur
2022-08-15 17:02:45 +08:00
@dzdh 你仔细看,支付宝的页面是做了 IE6 的兼容的,这系统如果是 spring gateway ,除非是我 java 历史需要恶补,不是太超前了
Onlyil
2022-08-15 17:07:30 +08:00
网关层统一接入吧,之前公司也是这样
brader
2022-08-15 17:08:33 +08:00
类似这种风格,我上次接入 ETH 的 JSON-RPC API 的时候遇到过,https://ethereum.org/en/developers/docs/apis/json-rpc/
感觉没有什么吧,一样用。
然后关于你说的全部请求使用 POST ,其实大部分请求都可以使用 post ,但是有一小部分请求你不得不使用 get ,就是那种需要通过 url 传递参数的场景,比如你分享一个链接给别人之类的
Tink
2022-08-15 17:09:05 +08:00
有这样的,以前我们项目就是这么写的
westoy
2022-08-15 17:16:30 +08:00
介于 web rpc 和 rest 中间的一种风格
liut2016
2022-08-15 17:24:55 +08:00
@murmur #1 post 不是幂等的,不方便缓存,这样是否不太好?
eason1874
2022-08-15 17:28:08 +08:00
十几年前,虚拟主机时代,CMS 都这样,现在属于是文艺复兴了。不同的是以前没有网关,现在是有网关,而且是可编程网关
ChiangKaishek
2022-08-15 17:29:45 +08:00
@murmur #2 感觉这样好像也没给前后端带来啥好处, 接口可读性感觉还差了.
thetbw
2022-08-15 17:32:26 +08:00
@liut2016 api 要啥缓存,基本都要求是实时数据
dzdh
2022-08-15 17:43:20 +08:00
@liut2016 #13

是不是幂等和业务有关。post 个 id 后端检测 id 已存在然后不 insert 直接返回成功算不算幂等。
dcsuibian
2022-08-15 17:59:02 +08:00
别研究了,这有个鸡儿好处,就是在重新发明 http 罢了

这个 method 明显是拿来做请求分发的——正常直接用 url 就好了,offset 、pageSize 其实用 get 放查询参数里更好。
设计这个的人可能不太了解 http 、restful ,可能是个人喜好,可能是从老师傅那里抄过来的等等。

不是什么大事,毕竟谁还没重复造过轮子呢。
ChiangKaishek
2022-08-15 17:59:39 +08:00
@Tink 啥情况下要这样写接口啊?
bk201
2022-08-15 18:01:12 +08:00
方便拦截处理吧,放在 path 部分可能不能严格要求格式。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/873010

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX