graphql 服务器和 api 网关之间的区别

问题描述 投票:0回答:4

GraphQL Server 和 API 网关有什么区别?因为它既可以组合多个 api 的响应,又可以进行身份验证、输入验证、指标。

graphql api-gateway
4个回答
1
投票

网关是路由流量的服务器,它是一种常用的系统设计模式,如 Martin Fowler here 所描述。

您可以在 OSI 模型的任何层实现网关。

您可以使用它来路由传输层中的 TCP、UDP 包、DNS 查询、应用层中的 HTTP 请求,甚至可以在计算机的主板总线中路由。

Graphql 服务器是一个 Web 服务器,位于 OSI 模型的应用程序层,它实现了 GraphQL 规范

您可以使用 Graphql 服务器实现网关。


0
投票

我会这样对角色进行分类:

API网关

在本地托管时代,API 网关托管在 DMZ 中并暴露于互联网。获得网关访问权限的攻击者将无法访问数据库连接字符串等内容。这种类型的分层仍然是托管最佳实践,尽管云提供商可能会为您这样做。

API网关可以处理横切问题,例如速率限制。他们还可以运行插件来实现通用安全性,例如将 cookie 转换为令牌,或应用 CSRF 检查。这简化了您需要在 API 中编写的代码。

一个有趣的用例是某些部门的法律要求,将用户的数据保留在其本国境内。网关也可以管理这种类型的高级路由,例如,如果 cookie 或令牌中有可以读取的区域值。这可以确保美国用户的所有请求都会路由到美国服务器,即使该用户当前位于亚洲。

聚合器 API

在 GraphQL 之前,从 UI 到 API 的端到端流程可能涉及从应用程序到入口点 API 的 1000 英里 HTTP 请求。然后,这可能会调用旁边托管的 3 个其他 API,以提供良好的性能和良好的关注点分离。

我想说 GraphQL 服务器具有这种类型的角色。您是否需要两个角色或只需要一个角色可能需要做出判断,这取决于对您重要的要求以及哪个组件最适合完成工作。

Kubernetes 入口

网关可以非常轻量。在 Kubernetes 中,入口控制器充当网关,可以接收来自多个互联网 URL 的请求。因此,您可以使用 Kong 或 NGINX 入口,它们可以运行插件以在需要时应用自定义逻辑。这将路由到 GraphQL 服务器。


0
投票

GraphQL 服务器是一种 API 网关。

目标是从一个端点公开来自多个微服务的大量 API。

真正的区别在于,使用 GraphQL,您将要求 api 获取一些信息(并且您将在正文中发送要检索的数据的结构)。 经典 API 将在其 OpenAPI 合约中定义响应结构,无论您想要或不想要,您都将收到“所有数据”。

Example of steps to query GraphQL


0
投票

两者完全不同。 API网关主要用于计量、执行策略和运行时执行。 GraphQL 用于指示服务器根据客户端层的请求返回结果。

通常 REST API 是根据业务目的定义的。如果目的增强或改变,那么我们需要引入新的 REST API 或积累现有的 REST API 并产生预期的结果。

但是 GraphQL 可以轻松解决这个问题。因为客户端可以决定应该响应什么,并且 GraphQL 服务器可以理解查询并相应地响应。

所以 GraphQL 和 APIGateway 的目的完全不同

© www.soinside.com 2019 - 2024. All rights reserved.