对外开放接口需要注意哪些地方?

2024-03-28 14:45:49 +08:00
 3country

最近公司有对外的业务,想新开发几个开放的接口,以前没有过相关经验,来请教下各位。

查了一下,目前考虑到的有

以上是否都需要呢?

2535 次点击
所在节点    程序员
18 条回复
NessajCN
2024-03-28 14:55:20 +08:00
ip 白名单看情况,面向公众的就别了,没必要
appid 这些是接口内验证用的,叫啥名无所谓,这个要
接口签名跟上面这个重复了,纯折腾开发者还是别了
限流这个是付费相关的,根据实际需求来
https 是标配了,不过这个跟接口本身没啥关系,是传输层的
wentjiang
2024-03-28 14:57:31 +08:00
你可以直接参考淘宝的开放平台,然后根据自己实际的业务进行修改
3country
2024-03-28 15:03:18 +08:00
@NessajCN 就是付费相关的,面向企业,那只有 3 可有可无了
yule111222
2024-03-28 15:20:59 +08:00
建议用标准 oauth2 ,不要抄国内那些乱七八糟的
标准 oatuh2 强制要求 https ,也不需要接口签名,纯脱裤子放屁
javalaw2010
2024-03-28 15:24:31 +08:00
看起来不是专门做 open api 的业务,预计未来这方面的业务不会很大的话,就简单处理,IP 白名单没必要,APPID 简化为一个 token 让对方保存好丢到 header 里面。接口签名没必要,接口限流根据实际业务做一下,https 标配了没的说。
yuanmomo
2024-03-28 15:35:24 +08:00
access log ,监控响应状态和耗时

服务 health 监控

一般入参和响应会有日志,有助于排查日志(这个主要看请求量,不然日志就太多了)

接口幂等

所有参数验证,不相信客户端的所有数据

接口有一个参数,时间戳,后端优先校验时间戳,跟当年时间误差超过多大的不处理
afxcn
2024-03-28 15:40:35 +08:00
我们就搞了个 accessToken, 再根据权限来管理哪些 api 可以调。

https 是必需的了吧
sparklee
2024-03-28 15:46:25 +08:00
接口参数签名还是要的, 一定程度上防止被拦截之后篡改数据
gerefoxing
2024-03-28 17:31:41 +08:00
accessToken&验签,可以看下各大平台接口对接文档参考下
l4ever
2024-03-28 17:51:48 +08:00
@sparklee 有 https 了没必要.
l4ever
2024-03-28 17:52:14 +08:00
看看企业微信的 api, 学习一下.
flyqie
2024-03-28 22:26:37 +08:00
@NessajCN #1

APPID 机制跟 接口签名 他俩实际做的时候貌似是合到一起的吧?

我们是这么做的。

header 里传 appid 和 sign: md5(请求体+secret)
crazyweeds
2024-03-29 08:46:44 +08:00
appid+appid 级别的限流,其他不是很有必要。
其他如果你觉得必要,那么你做好 SDK ,而不是微信一样,就提供文档。因为你无法做到微信那种,只管拉 X ,不管擦。出现问题,你还得配合调试,徒增烦恼。
当然,可以刷 KPI ,毕竟现在老板不是喜欢员工看上去很忙么,满足老板的愿望。效率低?那不是你管的事情。
layxy
2024-03-29 09:09:44 +08:00
你说的都需要,ip 白名单可以限制调用访,appid 机制可以记录调用方是谁,接口签名可以验证数据是否伪造(最好加时间戳),限流可以控制调用,https 协议是必须得,否则你需要自己提供报文加解密
aino
2024-03-29 09:24:09 +08:00
ip 白名单是最有用的
bianhui
2024-03-29 13:22:42 +08:00
我觉得规范和文档最重要,你说的那些安全啥的,外面包一层权限验证关网就都搞定了。
jipfqf
2024-03-29 14:49:13 +08:00
分页参数尽可能指定范围,而不是接口想查 1000 条就返回 1000 条,爬无数 api 得来的经验
dandankele
2024-05-24 10:51:30 +08:00
我也有一个问题。。哪位大神顺便帮我回答一下。。。

就是对外暴露的开放接口,我是直接在业务侧的应用中开发这些接口并暴露出去?还是把业务侧后方的更细粒度的服务接口暴露出去作为开放接口?

我目前感觉应该在业务侧提供。。

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

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

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

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

© 2021 V2EX