首页 > 解决方案 > API 网关是否应该与业务逻辑耦合/分离

问题描述

我们正在尝试在我们的应用程序前面构建一个 API 网关(我们可能会尽快将应用程序拆分为微服务),并且遇到了一些问题。

1 - 不同的 API 类型。

在我们的应用程序中有两种API,大部分都是我们自己使用的(用户登录/注销,新闻添加/删除),我们Self-used API这里称之为。并且有些 API 会被允许第三方使用,我们Open API这里称之为。

他们都应该通过网关吗?

2 - 不同的身份验证

自用 API 可能需要用户登录或具有相关权限,Open API 将要求第三方应用获取密钥,我们将使用该密钥来识别和限制请求速率。

各种认证都应该在网关完成吗?如果是,Self-used api 认证是业务相关的,是不是表示这个 api 网关不能被其他应用程序共享?

此外,第三方开发人员将创建他们的应用程序并取回密钥,他们还可以更新/删除应用程序(类似于 Google API 控制台)。

我不确定这是否应该放在网关或其他微服务中。IMO,我更喜欢将这些功能放在一个新的服务中,但是验证和速率限制是在网关中完成的,这意味着对于每个请求,网关都必须通过服务的键来查询用户,速率限制和其他信息,这将使网关与业务再次耦合。

标签: apiapi-gateway

解决方案


有很多方法可以实现 API 网关。您可以将不同的端点与单个 API 网关一起使用。以下是一些相关的链接

Serverless 博客《如何使用 Serverless 在一个 API 域下部署多个微服务》https://serverless.com/blog/api-gateway-multiple-services/

Nginx “你真的需要不同类型的 API 网关吗?(提示:不!)” https://www.nginx.com/blog/do-you-really-need-different-kinds-of-api-gateways-hint -不/

Sentialabs.io “亚马逊 API 网关类型、用例和性能” https://www.sentialabs.io/2018/09/13/API-Gateway-Types-Compared.html

AWS API 网关常见问题https://aws.amazon.com/api-gateway/faqs/

考虑一下您尝试使用您的方法完成的功能类型,以及 API Gateway 将如何帮助您解决这些问题。


推荐阅读