首页
学习
活动
专区
圈层
工具
发布

安息吧 REST API,GraphQL 长存

例如,客户端不能指定为该资源中的记录选择哪些字段。这意味着 REST API 服务将始终返回所有字段,而不管客户端实际需要哪些。GraphQL 针对这个问题定义的术语是超量获取不需要的信息。...UI 使用了我们假想的 JSON 数据对象中的所有“键”。 现在我们来看看如何使用 RESTful API 请求这些数据。...现在,将此 GraphQL 查询与我们最开始使用的原始 JSON 数据进行比较。会发现,GraphQL 查询就是 JSON 数据的确切结构,除了没有所有“值”部分。...同样的关系也适用于 GraphQL 查询。采用 JSON 响应,移除所有“答案”部分(键所对应的值),最后得到一个非常适合代表关于该 JSON 响应的问题的 GraphQL 查询。...对于简单的 RESTful API 端点逻辑,可以通过增强结构化的 SQL 查询来分析,检测和解决 N+1 问题。对于 GraphQL 动态解析的字段,就没那么简单了。

3.4K30

API接口架构REST vs GraphQL

然后一个 REST API 就完成了 GET/api/articles,它以 JSON 数组的形式返回所需的数据,如下例所示: // GET /articles [ { "id": 1, "title"...这可以包括特定字段,甚至在嵌套对象中。我们之前看到必须在模式上定义操作。但是,在这些操作中,我们可以指定我们希望查询返回到模式限制的哪些字段。...请注意,在 GraphQL 响应中接收到的数据将与请求它的查询具有相同的结构。...例如,假设我们决定将实体中的description字段重命名的时候. REST 通过提供多个版本来处理这个问题,这对于 API 开发人员来说是很麻烦的。...使用 GraphQL,可以从模式中删除不推荐使用的字段,而不会影响现有查询。这为应用程序提供了对新功能的持续访问,并鼓励更清洁、更可维护的代码。

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

    API 架构风格抉择:SOAP、REST、GraphQL 和 RPC 的特性、优势与局限

    过度获取和不足获取问题。REST响应包含的数据过多或过少,通常需要发起另一个请求。 REST 用例 管理 API。这类 API 专注于管理系统中的对象,面向众多用户,是最常见的 API 类型。...GraphQL 的工作原理 GraphQL 首先构建一个模式 (Schema),它描述了 GraphQL API 中可能执行的所有查询以及它们返回的所有类型。...到达后端应用程序后,GraphQL 操作将根据整个模式进行解释,并解析为前端应用程序的数据。向服务器发送一个大规模查询后,API 将返回一个 JSON 响应,其数据结构与我们请求的数据完全一致。...通过将客户端指向 GraphQL API,我们就能了解有哪些可用的查询。 非常适合图形数据。适合包含深层链接关系的数据,但不适合平面数据。 无版本控制。...而 REST 架构不会分部分公开数据。要么全部公开,要么全部不公开。 GraphQL 的缺点 性能问题。GraphQL牺牲了复杂性来换取其强大功能。一个请求中嵌套过多字段可能会导致系统过载。

    1.2K10

    Windows 商店应用中使用 SharePoint REST API

    前面一篇我们介绍了 Office 365 REST API 的官方工具的使用,本篇我们来看一下 SharePoint REST API 本身的描述、结构和使用方法,以及一些使用经验。...REST API 默认会返回 Atom 格式的数据,不过我们也可以根据需求设定返回 JSON 格式的数据。...接下来我们来看看 REST API 的结构组成:       端点的基本URL是:https://server/site/_api ,它是所有 SharePoint REST API 的基础,其中 server...上面我们介绍了列表,文件夹等类型 API 的地址构造,接下来我们看看这些请求地址中允许的查询参数都有哪些:               (1)$select 参数        如 SQL 中 Select...下面这张表,涵盖了 SharePoint REST API 中几乎所有的查询条件和数字、字符等的比较关键字。

    6.8K150

    使用ASP.NET Core开发GraphQL服务器 -- 预备知识(上)

    GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。...GraphQL的设计原则 分层结构:GraphQL的查询是有层次结构的,字段可以内嵌其它字段;查询和返回数据的结构是一致的。...如果您想了解REST in ASP.NET Core,请看我写的这个系列文章:https://www.cnblogs.com/cgzl/p/9178672.html#rest REST有几个问题: 过度获取...不灵活:随着API的演进,REST需要随时创建新的端点,所以REST API的端点增长速度很快;此外有版本和兼容性需要谨慎考虑。 而GraphQL,典型的结构是只有一个端点。...结果以JSON形式返回,其数据包含在data属性下,结构和查询结构一致。 如果我还想在查询中包含浏览者的姓名,那就加一个字段即可: ? GraphQL的查询也可以有注释: ?

    2.1K40

    超越 REST

    ; json— — — — — — — — — — — — -{“hello world”: 1, “2”: 3}(1 row) 在生成的模式中,数据类型为 JSON: json 字段的内部结构(hello...为了进一步描述 json 字段的内部结构(将其在生成的模式中公开),定义一个复合类型,并创建一个返回该类型的视图: postgres_test_db=# CREATE TYPE postgraphile.custom_type...字段不再显示为不透明的类型 JSON,而是显示为 CustomType: (还要注意,对视图所做的注解(A description for the view)显示在查询字段的文档中)。...的合法性问题引起了人们的关注,提出了使用类似于 SQL 的查询接口以提供对数据库表的打开权限(open access)。...一旦 UI 和后端之间的“公共 API”(“public API”)固化,我们就“加固”了 GraphQL 模式,通过使用智能注解 @omit 标记表和视图来删除所有不必要的查询(由 Graphile

    4.1K20

    使用 GraphQL 和 Ballerina 操作多个数据源

    GraphQL 是更好的 REST 在过去的十年中,REST 已经成为一种流行的 API 设计架构。...REST 和 GraphQL 可以被认为是解决同一问题(通过 Web 服务访问数据)的两种不同的方法。但是,随着客户端对 API 的访问需求发生了快速变化,REST API 已经变得太不灵活了。...但在使用 GraphQL 时,你可以使用查询语法定义所需信息的结构,然后通过单个 API 请求就可以获取所需的信息。...支持基于模式和类型系统的开发方式 GraphQL 有一个强大的类型系统,可用于定义通过 API 公开出来的数据,所有这些类型都可以使用 GraphQL 模式定义语言(SDL)写到模式中。...书店的客户端可以通过 GraphQL API 完成以下这些操作: 获取所有书籍的详细信息; 通过提供书名获取书籍的详细信息; 向数据库中添加新书。

    3.5K20

    GraphQL与传统API对比介绍教程

    每个URL代表一种资源,服务器返回的响应包含资源的表示(通常是JSON或XML格式)。优点:简单直观:使用HTTP协议,易于理解和实现。广泛支持:几乎所有的编程语言和框架都支持REST。...与REST不同,GraphQL允许客户端明确指定需要的数据,服务器根据查询返回响应。优点:灵活性高:客户端可以指定需要的字段和嵌套关系,避免冗余数据。...单一端点:所有查询通过一个端点完成,简化了API设计。强类型系统:提供了明确的类型定义和验证,减少了错误发生的可能。缺点:复杂性增加:GraphQL查询语言和架构需要一定的学习成本。...缓存难度:由于查询的灵活性,传统的HTTP缓存机制不容易实现。性能问题:复杂的查询可能导致性能问题,需谨慎设计和优化。...性能REST:可能需要多次请求才能获取嵌套资源,增加了网络开销。GraphQL:可以在一次请求中获取所有相关数据,但复杂查询可能增加服务器负担。

    73510

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

    REST是同步服务,如果需要可能要引入回调机制。例如Webhook。 REST只提供客户端调用服务器的选项,不支持服务器端发起请求。 于是新的API类型会出现来解决这些问题。...让我们研究一下GraphQL的设计原则。 查询是分层结构的,具有分层和嵌套字段,查询与响应数据一对一匹配。查询和响应的形状像树,可以查询每个项目的其他嵌套字段。...除了灵活性这个最大的优点外,GraphQL还有以下的优点: 声明性的数据获取,避免了客户端和服务器端的额外交互 优秀的开发体验,不需要版本控制,因为引入新的字段不会影响到API查询。...与GraphQL不同,RESTful API可以利用HTTP规范中内置的缓存。正如前面提到的,GraphQL查询可以请求资源的任何字段,因此缓存本质上是困难的。...与使用JSON(主要是JSON)的REST不同,gRPC使用Protobuf,这是编码数据的更好方法。由于JSON是基于文本的格式,因此它比protobuf格式的压缩数据要重得多。

    2.2K20

    API架构风格的深度解析与选择策略:SOAP、REST、GraphQL与RPC

    SOAP(简单对象访问协议) SOAP是一种基于XML的、用于在分布式环境中交换结构化信息的协议。它最初是为了解决企业间的数据交换问题而设计的,因此在安全性、可靠性和事务处理方面有着显著的优势。...多种数据格式:REST支持JSON、XML等多种数据格式,提高了API的灵活性和可扩展性。 优势: 简洁性:REST的API设计简洁明了,易于理解和使用。...局限性: 数据获取问题:REST可能导致数据的过度获取或不足获取,增加了网络传输的开销和客户端的处理负担。 性能瓶颈:在需要高效数据提取的复杂应用中,REST可能不是最佳选择。 3....GraphQL GraphQL是一种用于API的查询语言,由Facebook开发并开源。它允许客户端在一次请求中精确地指定所需的数据,从而避免了REST API中的多次请求和数据冗余问题。...当将这个查询发送到GraphQL服务器时,服务器会返回一个包含了我们所请求的文章的标题、内容以及作者的信息,所有数据都以嵌套的方式返回,与查询的结构保持一致。

    59210

    2018年微服务的5个发展趋势

    在FaaS体系结构中,函数作为文本存储在数据库中,并由事件触发。一旦调用该函数,API控制器就会收到消息并通过负载均衡器将消息发送到消息总线,消息总线将其排队并调度到调用程序容器。...可以添加新字段,并且字段可以在不影响现有查询或重构客户端应用程序的情况下进行优化。GraphQL功能强大,因为它不依赖于特定的数据库或存储引擎。...通通过在类型和字段之间定义资源之间的关系(而不是像REST一样的端点),GraphQL可以遵循属性之间的引用,因此服务可以使用单个查询从多个资源中接收数据。...另外,REST api要求为一个请求加载多个url,增加网络跳数,减慢查询速度。通过减少往返,GraphQL减少了每个数据请求所需的资源数量。返回的数据通常被格式化为JSON。...因为查询更简单,所以整个过程更稳定。该规范最著名的是支持外部api,但我们发现它也被用于内部api。

    1.7K20

    常见形式 Web API 的简单分类总结

    GraphQL允许客户端定义需要得到的数据结构,服务器精确的返回所需的数据结构,例如: ?...与REST和RPC不同,GraphQL API只需要一个端点;它也不需要使用不同的HTTP动词,它只使用POST,你需要在JSON body里面指定是要执行查询还是修改。...相对REST和RPC,GraphQL有下面几个优势: 节省了多重的请求往返,GraphQL可以一次把所需的关联数据全部查询出来。不会存在例如N+1这样的问题 避免了API版本问题。...你可以随时添加字段和类型,不会影响现有的查询。可以标记弃用。通过Log可以追踪出哪些字段被谁使用,如果字段没人再去使用,就可以移除它了。 Payload比较小。...对于安全的调用REST API,现在的方案都比较成熟;而对于WebHook来说,这方面依然在探索中前进。 防火墙。防火墙后运行的应用可以通过HTTP访问API,但是它们可能无法接收入站的流量。

    3.7K50

    1.1 REST

    GraphQL允许客户端定义需要得到的数据结构,服务器精确的返回所需的数据结构,例如: 与REST和RPC不同,GraphQL API只需要一个端点;它也不需要使用不同的HTTP动词,它只使用POST...,你需要在JSON body里面指定是要执行查询还是修改。...相对REST和RPC,GraphQL有下面几个优势: 节省了多重的请求往返,GraphQL可以一次把所需的关联数据全部查询出来。不会存在例如N+1这样的问题 避免了API版本问题。...你可以随时添加字段和类型,不会影响现有的查询。可以标记弃用。通过Log可以追踪出哪些字段被谁使用,如果字段没人再去使用,就可以移除它了。 Payload比较小。...对于安全的调用REST API,现在的方案都比较成熟;而对于WebHook来说,这方面依然在探索中前进。 防火墙。防火墙后运行的应用可以通过HTTP访问API,但是它们可能无法接收入站的流量。

    1.7K21

    你确定你的 REST API 真的符合 REST 规范?

    什么是 RESTful API 首先,想问一个问题,你的项目里真的有真正的 RESTful API 吗? 如果你认为你的项目有 RESTful API,那么你很可能错了。...RESTful API 背后的思想是遵循REST 规范中描述的所有架构规则和限制的方式进行开发。然而,实际上,这在实践中基本上是不可能的。 一方面,REST 包含了太多模糊和模棱两可的定义。...因为你通过高质量的 API 规范实现的 api 将会是一致的,具有清晰的结构、良好的文档和高的单元测试覆盖率。 通常,REST API规范与其文档相关联。...基本上,这些插件允许你为必须包含在 JSON 对象中的特定模型提供字段列表,以及附加规则。例如,你可以重命名字段并动态计算它们的值。...例如,POST 和PATCH 请求中可用的字段列表必须严格限制,PATCH 通常将所有字段标记为可选。描述响应的模型可以更加自由。

    1.6K20

    Elasticsearch使用REST API实现全文检索

    通过rest api添加检索数据,阅读官方文档可以发现,elasticsearch支持动态映射,但是其中有不少问题,且听慢慢详解。...本文主要讲述三点内容: 1 Elasticsearch常用的rest api 2 Elasticsearch使用bulk命令添加索引数据 ES REST API   elasticsearch支持通过...v  查询所有的索引: curl localhost:9200/_cat/indices?...,json文件名称随意指定,第一行定义了索引和一些常用字段:   _index定义了索引的名称,如果没有指定需要在curl命令中添加索引名称字段   _type定义了索引的类型,如果没有指定需要在curl...命令中添加索引类型字段   _id定义了该行数据的id,如果没有指定,会随机生成一串数字。

    1.9K70

    干货 | Elasticsearch 开发实战常用命令清单

    0、背景 Elasticsearch 具有一组丰富的易于理解的 REST API,这些 API 均可如下几种方式通过 HTTP 调用进行访问。...API很容易,除了实际的主机名/ IP和端口外,它还包含四个部分: 动词——REST调用的 GET,PUT,POST和DELETE部分。...正文——某些调用需要JSON正文(例如设置选项),并将包含在{}中 对应示例中的:检索语句部分。 1.2 常用选项 有一些通用选项适用于许多(不是全部)URL。这些是: ?help——帮助选项。...v&h=heap.percent,diskUsedPercent,cpu,master,name&s=name 另外,Kibana 会将您的 Dev Tools 查询保存在 cookie 中。...GET /_cluster/settings 更大的列表视图——包括所有默认值,并使用平面视图使其更易于阅读。 GET /_cluster/settings?

    84420

    【译】如何在 Node.js 中创建安全的 GraphQL API

    可能会想到有以下的问题: 使用 GraphQL API 的目的是什么? 什么是 GraphQL API? 什么是 GraphQL 查询? GraphQL 有什么好处?...这些问题都非常直面人心,在回答这些问题之前,我们先简单概述下 Web 开发的现状: 你会发现现在所有的解决方案都是围绕使用某种 API 来实现。...如前面所讲述的那样,查询 (query) 是客户端从 API 读取和操作数据的方式。你可以传递一个对象的类型,并且定义所希望返回的字段类型。...下面是一个简单的查询: query{ users{ firstName, lastName } } 在这个查询中,我们想从用户集合中获取所有的用户,但只需要返回 firstName...配置项目依赖和 TypeScript 为了加快这一步,你可以直接使用我们 git 仓库中的内容来替换你的 package.json,这里面包含了所需的所有依赖: { "name": "node-graphql

    3.7K20

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

    GraphQL作为一种用于API的查询语言,基于类型和字段的方式进行相关操作,这是一种类似于JSON的格式,可以看到下图左边部分。...正因如此,GraphQL API相比于RESTful API,GraphQL 只用一个数据源就可以查询所有数据,所有的请求都可以访问一个服务端点;并且GraphQL 返回的结果响应准确地根据客户端的请求字段...比如,进行查询操作时,请求中必定带有”query“字段。...query { user { id }}在GraphQL API的请求中通常会采用JSON的格式,而其特定类似JSON的数据格式会嵌套在对应的参数当中,例如下面的”query“参数的值就嵌套了整个查询的数据结构...判断参数值是否为GraphQL特殊的数据结构提取响应参数是否和数据结构中一一对应识别匹配在请求中是否存在代表GraphQL API操作的特殊字段,例如"query"、"mutation" 或"subscription

    2.2K21
    领券