首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安息吧 REST API,GraphQL 长存

在 REST API 中,没有客户端请求语言。客户端无法控制服务器返回的数据。没有任何语言可以这样做。更确切地说,可用于客户端的语言非常有限。...这些 API 中的每一个最终都会变成一个具有常规 REST 端点 + 由于性能原因而制定的自定义特殊端点的组合。这就是为什么 GraphQL 提供了更好的选择。 GraphQL如何做到这一点?...这些类型可以是原语的或者自定义的,并且模式中的所有其他类型都需要类型。这种丰富的类型系统带来丰富的功能,如拥有内省 API,并能够为客户端和服务器构建强大的工具。...最后一个概念解释了为什么我个人认为 GraphQL 是一个规则颠覆者的原因。 这些都是高层次的概念。让我们进一步了解一些细节。 为了解决多次往返的问题,GraphQL 让响应服务器只是作为一个端点。...我们是在 GraphQL 解析过程之前,之后还是之间处理它们? 为了解答这个问题,你可以将 GraphQL 视为在你自己的后端数据获取逻辑之上的 DSL(领域特定语言)。

2.7K30

PayPal大规模采用GraphQL的探索和实践

由于 REST API 中的服务器决定了数据的形状,我们的 UI 团队花费了大量时间在客户端过滤和解析数据,通常使用诸如 Redux 之类的库来格式化和存储数据。...GraphQL 帮助解决了这个问题,因为它允许我们在一次往返中获取所需的一切。 使客户端保持最新:我们在 REST API 中大量使用 API 版本号。...对于那些没有领域知识的人来说,易于集成:在我们的 Identity 团队中,我们希望在使用我们的服务时提供统一的体验,而不需要 PayPal 系统的领域知识。...使用 GraphQL,我们可以获得字段级的检测,并清楚了解哪个解析器花了多长时间、常见错误以及调用了哪些字段。这个字段级检测有助于智能地弃用不再使用的字段。...非常感谢 Mark Stuart 在 PayPal 中领导 GraphQL 的采用,激励我分享我的 GraphQL 经验,并激励我们的开发者社区。

3.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    GraphQL 基础实践

    你可以将 GraphQL 理解成一个中间件,是连接客户端和数据库之间的一座桥梁,客户端给它一个描述,然后从数据库中组合出符合这段描述的数据返回。...而且在这样的 API 设计之中,特定资源分布在特定的 API 端点之中,对于后端来说写起来是挺方便的,但对于Web端或者客户端来说并不一定。...Schema 本身并不代表你数据库中真实的数据结构,它的定义决定了这整个端点能干些什么事情,确定了我们能向端点要什么,操作什么。...想象这么一个页面,我要列出两个电影的信息做对比,为了发挥 GraphQL 的优势,我要同时查询这两部电影的信息,在请求体中请求 movie 数据。前面我们说到,请求体决定了返回数据的结构。...请求的中间件 要处理 GraphQL 请求,我们就必须拦截特定请求进行解析处理,在 ThinkJS 中,我们完全可以借助中间件的能力完成解析和数据返回。

    12.8K20

    GraphQL 初体验,Node.js 构建 GraphQL API 指南

    为什么选择 GraphQL 与任何技术决策一样,了解 GraphQL 为你的项目提供了哪些优势是很重要的,而不是简单地因为它是一个流行词而选择它。...另一部分涉及实际获取数据,这是通过使用解析器完成的,解析器是一个返回字段基础值的函数。 让我们看一下如何在 Node.js 中实现解析器。...为了解决这个问题,我们需要修改解析器函数。除了字段的参数外,解析器还可以访问它的父节点,以及传入的特殊上下文值,这些值可以提供有关当前已认证用户的信息。...但这个缺点也是积极的:通过仔细设计你的 Graphql Schema,你可以避免在更容易实现(也更容易破坏)的 REST 端点中明显的陷阱,如命名的不一致和混乱的关系。...例如,无论成功与否,GraphQL 仅制定一个状态码 200.在这个响应中会返回一个特殊的错误键,供客户端解析和识别出错,因此,错误处理可能会有些棘手。

    8.3K40

    GraphQL 和 REST 优缺点对比,附上代码示例

    REST 并不是在 web 上发送信息的第一种协议。但十多年来,它一直主宰着 API 领域。 最近,由 Facebook 设计的新手 GraphQL 变得越来越流行。...它的目的是纠正REST的一些缺点,但没有一项技术是完美的。 与 REST 相比,GraphQL 有哪些优点?为什么要在项目中使用其中一种?...例如,在 REST 中,您需要向 /api/posts 发送 GET 请求来获取帖子,该请求可能会返回一个 JSON 对象,其中包含帖子标题、内容、标记、日期,可能还有用户 ID。...GraphQL 使得这一点很容易实现。 抓取过度/抓取不足 另一个存在的问题是过多抓取和抓取不足。在 REST API 中,当您到达一个端点时,总是会得到相同的数据,无论您是否需要它。...如果您不想为客户端错误返回 200 OK 状态(这在 GraphQL 中很常见),则需要更多地考虑错误处理。

    1K30

    GraphQL是API的未来,但它并非银弹

    这篇文章是对 Kyle Schrade 的文章“为什么使用 GraphQL”的回应。这并不是批评。这篇文章是一个很好的讨论基础,因为它代表了我在社区中经常听到的观点。...GraphQL 已经持久化了查询,但是这种实现会带来额外的开销。如果你没有使用像 Relay 这样的客户端(它默认会持久化查询),则必须自己完成,或者使用一些第三方库来实现。...对于 BFF 多么强大,以及与重量级的 GraphQL 客户端相比,我们从“stale while revalidate 模式”中获得了多少好处,我想我已经解释得够多了。...使用 GraphQL,解析部分数据的逻辑位于服务器中。客户端需要有额外的逻辑对部分响应做相应的处理。 使用 REST,获取部分数据的逻辑位于客户端或 BFF 中。...在 REST 响应中,你也可以返回有关失败原因的特定信息。OAS 允许使用复合类型,因此,你可以就部分响应向客户端提供丰富的信息。

    2K10

    GraphQL最突出的架构优势是什么?

    由于具备执行自省查询的能力,所以 GraphQL Playground 的 GraphQL 资源管理器可以显示 GraphQL 端点的所有功能 在 REST 领域中,我只看到了使用 Swagger 构建的...通过 Apollo Federation,我们可以绘制并公开由多个 GraphQL 端点组成的单个数据图 在 Federation 中,你可以组成模式并解析其他服务 / 限界上下文中的字段。...收到请求时,将从相应的服务中解析这些字段。 对于规模庞大的组织来说,这种需求并不罕见。 7单一端点 SOLID 原则中的开闭原则指出: “组件 / 系统 / 类应对扩展开放,但对修改封闭”。...在架构层面,由于 GraphQL 仅向客户端公开单个端点,因此它满足了这一原则。 客户端隐藏了字段解析机制的所有复杂性,它只需关注如何在 GraphQL 服务器之上构建即可。...听上去一切都很完美,但是你我都生活在现实世界中。我知道这样理想化的情况并不总是存在,至少没有适当的工具链是不可能做到的。

    2.2K20

    GraphQL与OpenAPI:数据治理的优缺点

    但在 API 标准领域,GraphQL 和 OpenAPI 作为企业中两个重要的框架脱颖而出。 API 在数据消费中发挥着至关重要的作用,并且通过代理,在确保健全的数据治理方面至关重要。...GraphQL 的查询语言没有包含其他标准,如 HTTP 或 REST。它对客户端和服务器如何通信请求和结果是不可知的。...自定义标量可以表示巨大数字、日期或特定用例(如科学计算)的地理解析坐标等概念。 OpenAPI OpenAPI 基于约定且可扩展性有限。...由于其专业化重点,GraphQL 可以提供以多种语言实现的参考库。这些库解析 GraphQL 模式和查询并将它们连接到代码,从而促进数据库和业务逻辑集成到响应中。...手动编写 GraphQL 解析器不在我的愿望清单上;让这项任务可行的是自动化的 GraphQL。有一些可信赖的供应商拥有出色的 GraphQL 自动化功能,这使得此方法变得可行且有吸引力。

    13210

    【API架构】使用 JSON API 的好处

    在 API 工艺的世界里,没有比设计更受热议的领域了。从 REST、gRPC 到 GraphQL,有许多方法可以设计和标准化 Web API 交互。...它描述了客户端应如何从服务器请求或编辑数据,以及服务器应如何响应所述请求。该规范的一个主要目标(现在是稳定的 v1.0)是优化 HTTP 请求;在请求数量和客户端和服务器之间交换的数据包大小方面。...JSON API 如何在实践中使用:FitBit 案例研究 让我们看看 JSON API 如何在实践中实现以设计高效的 API,使用 FitBit 作为现实生活中的案例研究。...比较 JSON API 和 GraphQL 既然我们本质上是在讨论使用图形,为什么不使用 GraphQL 呢?...“我个人认为缓存对于客户端性能考虑来说太重要了,不能事后考虑” ——耶利米·李 Lee 还指出,使用 JSON API 意味着开发人员不必采用像 GraphQL 这样的另一个工具链,而是可以继续使用他们很可能已经熟悉的技术

    2.8K20

    ASP.NET Core WebApi判断当前请求的API类型

    不同的前端和客户端(如浏览器、移动端、桌面应用等)可能需要与服务器进行多种形式的通信,常见的 API 类型包括 RESTful API、GraphQL、gRPC 以及 SOAP Web 服务等。...2.2 GraphQL APIGraphQL 是 Facebook 提出的查询语言,它允许客户端指定所需要的数据结构,而服务器则返回精确的数据。...与 RESTful API 不同,GraphQL 不依赖于固定的 URI 结构,而是通过一个统一的端点(通常是 POST 请求)来接收查询和变更操作。特点:单一的端点。...在 RESTful API 中,资源的 URI 是非常重要的,它通常表示资源的类别和状态。...Accept:客户端希望接受的响应格式(如 application/json, application/xml)。User-Agent:客户端应用程序的信息。

    1.8K00

    使用 GraphQL 进行 API 设计:从入门到实战

    后来,我接触了 GraphQL,它的灵活性和高效性让我眼前一亮。今天,我就来和大家聊聊如何使用 GraphQL 进行 API 设计,并通过一个实际项目代码示例,让你轻松上手。什么是 GraphQL?...GraphQL 由 Facebook 在 2015 年开源,是一种用于 API 查询的语言,允许客户端精确请求所需数据,避免数据冗余。...它的核心特点包括:灵活查询:客户端可以自定义返回的数据结构,避免无用数据。单一端点:所有请求都通过同一个 URL 处理,不需要多个 REST 端点。...我们希望提供一个灵活的 API,允许前端按需获取数据。1. 定义 GraphQL Schema在 GraphQL 中,Schema 是 API 的核心,它定义了数据的结构和查询方式。...我们可以使用 Apollo Playground 或 Postman 进行查询,比如:query { posts { title author { name } }}这将返回所有文章的标题以及对应作者的姓名

    13210

    2018 年前端开发五大趋势

    让我们举个具体的列子。想象一下,你需要在正在构建的社交网络框架中显示帖子列表,以及用户的喜好(点赞、收藏等)。在实现方面,这个例子很简单,你只需从下一个数据库端点发出请求。...但是,由于这些数据可能来自不同的来源(例如,如果帖子存储在 MongoDB或Redis中),生成的应用将比舒适的工作慢得多。...这就是GraphQL的用武之地,使用GraphQL而不是使用单独的端点来访问每个资源。你可以使用单个端点,该端点能够同时处理涉及多个数据源的复杂查询。...从1.0版本开始,Gatsby 使用了上面提到的 GraphQL。因此,在构建过程,它可以从多个 GraphQL API 中获得数据,然后使用它们创建一个完全静态的 React 客户端应用程序。...这就是为什么静态网站在这些年变得如此流行。除了我们上面描述的明显的优势外,这种页面有一个重要的缺点 —— 它的内容不容易被编辑。

    2.9K40

    技术专题:API资产识别大揭秘(一)

    传统的 API 拿到的是前后端约定好的数据格式,GraphQL 对 API 中的数据提供了一套易于理解的完整描述,客户端能够准确地获得它需要的数据,没有任何冗余,也让 API 更容易地随着时间推移而演进...在获取过滤后的流量后,将根据协议类型如HTTP、Dubbo、GRPC等协议类型进行完整包解析,对于复杂的参数结构,如JSON、XML和各种复杂编码,则使用各种解析引擎进行解析。...,过于理想的 RESTful API 可能在实际情况中会付出太多的成本,这样会导致很多企业并不会完全按照其规范进行,所以RESTful API在流量中可能并不会存在很明显提取特征来计算出它的API唯一标识符...正因如此,GraphQL API相比于RESTful API,GraphQL 只用一个数据源就可以查询所有数据,所有的请求都可以访问一个服务端点;并且GraphQL 返回的结果响应准确地根据客户端的请求字段...,也就是说,GraphQL API存在一个类似于JSON的特殊格式,且请求中的参数和返回结果一一对应。

    1.1K20

    GraphQL:现代API设计的革新

    本文将从GraphQL的基本概念、核心特性、实际使用以及优缺点等方面进行详细介绍。一、GraphQL的基本概念GraphQL是一种用于API的查询语言和运行时,用来满足客户端对数据的精确需求。...通过GraphQL,客户端可以明确指定需要的数据结构,服务器则根据请求返回对应的数据。GraphQL的核心思想是客户端通过单一端点发送查询,服务器返回客户端所请求的数据。...常见的类型包括标量类型(如Int、String等)和对象类型(如自定义的用户类型)。此外,GraphQL还支持列表类型和非空类型。...1.3 查询(Query)查询是GraphQL的核心操作,客户端通过查询向服务器请求数据。查询可以精确指定需要的数据结构,这样服务器只返回客户端需要的数据,从而减少了冗余数据的传输。...二、GraphQL的核心特性GraphQL之所以受到广泛欢迎,源于其几个核心特性:2.1 精确的数据查询通过GraphQL,客户端可以明确指定需要的数据结构,服务器只返回客户端所请求的数据。

    20410

    为什么我使用 GraphQL 而放弃 REST API?

    如果再乘以在线用户的数量,就会产生很大的 AWS 账单。显而易见的解决方案:只返回集合的子集。 分页相对简单。在查询参数中传递类似offset和limit这样的值:/todos?...无论哪种方式,客户端和服务器都需要特别注意解析、格式化和验证所有这些参数。如此多的乐趣!举例来说,如果没有恰当的验证且存在未初始化的变量,你就很容易地得到类似这样的东西:/todos?...你需要同时在服务器和客户端上实现每个端点 还有大量的库可以在 ORM 或直接数据库自省的帮助下自动生成 REST 端点。即使使用了这样的库,它们通常也不是很灵活或可扩展的。...不再有多个重量级的查询发送到一个刚性的 REST API,为了让客户端可以在应用程序 UI 中一次性显示它。你不再受限于一组端点,而是有一个可以查询和修改的模式,能够挑选客户端指定的字段和对象。...良好的工具和强大的行业支持使其非常有吸引力。 除了一些客户端库中存在的一些小问题(现在已经解决了)之外,我强烈推荐你仔细看看 GraphQL 在你的技术栈中可以提供什么。

    2.3K30

    大厂都在实践的GraphQL,你了解吗?

    前言 最近,GraphQL 在构建后端 API 方面获得越来越多大公司的青睐, 如 PayPal、Facebook、Hasura、去哪儿等公司都做了大量实践。...它为客户端提供了一种灵活的方式来请求它需要的数据,提供严格类型的接口来查询数据,以及比 REST 更好的错误处理。...定义领域类和存储库 为了简单起见,我们将直接在 GraphQL 接口中使用领域类。...带有@QueryMapping注释的函数将成为查询的处理程序。 查询名称会自动映射到函数名称,或者使用 @QueryMapping接口的value参数(在本例中为person)显式定义它。...每个错误都有一个错误消息、一个路径和一个查询中发生错误的位置,指示哪个字段导致了错误。 出现错误时,默认程序返回上述值。 我们可以通过创建自己的错误处理程序解析器来自定义返回错误的方式。

    2.6K40

    架构师该如何为应用选择合适的API

    然后,服务器返回SOAP响应(包含结果数据的XML格式的文档),例如价格,位置,功能。由于生成的数据采用标准化的机器可解析格式,因此发出请求的应用程序可以直接将其集成。...该结构以产品为中心,着重于前端希望如何接收数据,并构建交付所需的运行时。这样一来,就可以向后端请求一个所需的所有数据,然后让服务器根据GraphQL的规范从不同的端点获取数据。...尽管GraphQL的安装成本可能会高于传统的REST架构,但更具可维护性的代码,强大的开发工具以及简化的客户端查询,这些都是不错的收益。...协议缓冲区可以描述数据的结构,并且可以从该描述中生成代码,以生成或解析表示结构化数据的字节流。这就是为什么gRPC首选多语言(使用不同技术实现)的Web应用程序的原因。二进制数据格式使通信更轻松。...gRPC也可以与其他数据格式一起使用,但是首选的是protobuf。 同样,gRPC建立在HTTP / 2之上,它支持双向通信以及传统的请求/响应。gRPC允许服务器和客户端之间的松散耦合。

    1.6K20

    headless CMS_model view controller

    在这个阶段中,我将分享我对我发现的限制的经验。功能可能会因特定产品而异,如果是本地或saas解决方案。...此外,由于HCMS没有任何渲染,所有的表示逻辑都被要求提供给客户端。这对于解耦很有用,但在所有情况下,您只有一个消费者解耦优势并不那么相关,并且您在数据获取过程中引入了更多的复杂性和延迟。...(例如,您希望博客使用wordpress) 你有很多业务逻辑 你不是数据的主人 RawCMS:构建自己的Headless CMS 在本章中,我们将看到RawCMS是什么以及我如何使用ASP.NET Core...,如webapi,GraphQL,Odata 架构 基本上,我将实现的架构如下。...服务层 服务层是系统的核心部分。使用mongodb实体上的常规JObject映射,您可以在mongo集合中存储您想要的任何内容,所有数据都是无类型的。 这是本类中最相关的部分,用于解释它的工作原理。

    77120

    4种主流的API架构风格对比

    RPC 的紧密耦合使得可伸缩性要求和松散耦合的团队难以实现。因此,客户端要么会担心调用特定端点的带来的任何可能的副作用,要么需要尝试弄清楚要调用的端点,因为客户端不了解服务器如何命名其函数。...这使得 REST 在理论上很简单,但在实践中却很困难。 庞大的负载:REST 会返回大量丰富的元数据,以便客户端可以仅从响应中了解有关应用程序状态的所有必要信息。...在查询语句到达后端应用程序时,GraphQL 操作将根据整个模式进行解释,并向前端应用程序返回解析到的数据。...详细的错误消息:GraphQL 以类似于 SOAP 的方式提供所发生错误的详细信息。它的错误消息包括所有解析器,并指向确切的发生故障时的查询部分。...归根结底,去针对一些小型的用例来尝试某种特定 API 架构,并去了解它是否适合你的用例以及是否解决了你的问题,这样做是比较合适的。如果它适用于你的用例,就可以尝试扩展并查看它是否适用于更多的用例。

    2.3K30
    领券