对于 api 网关来说,两种设计,哪种更适合

2022-04-27 14:07:36 +08:00
 dzdh

是酱,觉得市面上的 api 网关都太产品化,难用(配置麻烦),所以用 spring cloud gateway 自己开发了一套网关。

然后对实现形式上,有一些争议,主要体现在规范、管理上。 比如:

第一种,像支付宝一样

openapi.x.com/gateway.do?method=api.name.and.version&other_business_parameters&sign_type=hmac&sign=

第二种

GET openapi.x.com/api/name/and/version?other_business_parameters HTTP/1.1
Host openapi.x.com
X-$公司名缩写-AUTHTYPE: HMAC-SHA256
X-$-Client-ID: xxx
X-$-Sign: xxxxxxxxx

无论那种,到网关,最终都 http.reveserve( http://backend-server-name-in-k8s:port)

就从表意、管理、规范、使用等等等等各方面来综合定一个方案,哪种更好。

尝试第一种,使用 apisix , 配置了一堆 /gatweay.do 的路由。。后台页面像这样:

路由 对应服务
/gateawy.do s1
/gateway.do s2
/gateway.do s3
/gateway.do s4

第二种,后台页面像这样:

路由 对应服务
/v1/s1/** s1
/v1/s2/** s2
/v1/special/** s3
/v1/444/** s4

不说技术实现,自己开发的话,无论哪种方案都能实现也都好实现。就说管理、规范等等等等其他方案。

1516 次点击
所在节点    问与答
3 条回复
cloverstd
2022-04-27 16:08:26 +08:00
如果你有前端监控,第二种方案,前端监控还要适配才能采集到正确的请求 API ,一般情况下前端监控不会处理 request header

我更倾向于把 appid 和 method 放到 path 里,这样中间链路的现有监控都能复用现成的,改造量最小,因为 http 监控打点都会去打点 URL ,但是 header 和 querystring 就不一定了
blackshadow
2022-04-27 17:11:40 +08:00
我们用了第二种,更简洁明了。 基于 gateway 的话,配置也方便
coreki
2022-04-27 19:06:43 +08:00
我用的第二种。不过第一种在前段定义 api url 的时候是不是更省事?

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

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

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

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

© 2021 V2EX