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



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

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

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

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

GraphqlServer是OSI模型的应用层中的一个web服务器,它实现Graphql规范

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

我会对角色进行如下分类:

API网关

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

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

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

骨料APIS

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

我认为GraphQL服务器具有这种类型的角色。您是需要两个角色,还是只需要一个角色,这可能是一个判断,这取决于对您来说很重要的需求,以及哪个组件最能胜任这项工作。

KUBERNETES INGRESS

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

GraphQL服务器是一种API网关。

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

真正的区别在于,使用GraphQL,您将要求api获取一些信息(并且您将在正文中发送您想要检索的数据的结构(。一个经典的API将在它的OpenAPI合约中定义一个响应结构;所有数据";不管你想不想。

查询GraphQL 的步骤示例

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

通常RESTAPI是基于业务目的定义的。如果目的被增强或改变,那么我们需要引入一个新的RESTneneneba API,或者积累现有的RESTAPI并产生预期的结果。

但是GraphQL可以很容易地解决这个问题。因为客户端可以指定什么应该是响应,GraphQL服务器可以理解查询并相应地做出响应。

因此GraphQL和APIGateway用于完全不同的目的

最新更新