开放 API 和业务 API

2021-12-23 16:20:17 +08:00
 contradictspiral

背景

目前在做一个平台型的项目,需要开放部分 API 给外部开发者使用,在架构设计上有些疑问。

疑问

  1. 这套暴露的 API 是直接把现有的业务 API 加一种鉴权方式(比如 OAuth2 ,开发者 token 之类的)给暴露出去呢,还是需要新写一套 API 呢?
  2. 对于目前比如阿里云这些平台的开放 API ,有大佬清楚是如何设计的么,他们前端页面会是也调用的同样的 API 吗?
2425 次点击
所在节点    程序员
5 条回复
Oktfolio
2021-12-23 16:44:27 +08:00
走 API Gateway 加鉴权。至于复用,个人偏向于新写一套 API 。
thinkershare
2021-12-23 16:57:42 +08:00
开放 API 属于应用层, 业务属于领域层, 网关还在更上层, 所以肯定是分开哈
br_wang
2021-12-23 16:58:27 +08:00
「隔离」挺重要的。即使不重新开发,重新部署一套也是有必要的。
v2orz
2021-12-23 17:31:31 +08:00
APIgateway
开放的和自己用的肯定不走一条道
NewConn
2021-12-24 14:33:08 +08:00
我们改过 3 次
最开始:对外和内部走一个 gateway ,同一套服务;网关有鉴权,但是只有对内页面会重定向到单点登录,对内的后台接口和对外接口,都通过 header 参数后门绕过;
第一次改:对外和对内同一个网关,同一套代码;对外和对内用不同的 CI 参数(主要就是数据库只读 /读写不同),不同的机器部署;
第二次改:对外接口有超大返回值,比如一次返回 6G 的 JSON(这不是关键)。对外接口返回时间长,占用网关的并发;网关的超时时间必须设置的很长,兼容对外接口,影响界面。所以网关也拆分成 2 个了。
第三次改:对外接口设置黑名单,必须统一 OAUTH 鉴权,header 带动态 token ;不在黑名单的接口,保持 header 参数绕过鉴权

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

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

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

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

© 2021 V2EX