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

安息吧 REST API,GraphQL 长存

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

2.7K30

API接口架构REST vs GraphQL

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

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

    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 几乎所有查询条件和数字、字符等比较关键字。

    4.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查询也可以有注释: ?

    1.7K40

    超越 REST

    ; json— — — — — — — — — — — — -{“hello world”: 1, “2”: 3}(1 row) 在生成模式,数据类型为 JSONjson 字段内部结构(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

    2.9K20

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

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

    2.4K20

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

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

    1.6K20

    GraphQL与传统API对比介绍教程

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

    16410

    2018年微服务5个发展趋势

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

    1.4K20

    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.3K21

    常见形式 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,但是它们可能无法接收入站流量。

    3K50

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

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

    26020

    【译】如何在 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

    2.5K20

    技术专题: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

    77220

    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.2K70

    干货 | 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?

    62920

    GraphQL+Koa2实现服务端API结合Apollo+Vue

    然而 REST api 表 现得过于僵化,无法跟上访问它们客户快速变化需求 RESTful API 不足 扩展性(多个终端需要返回不同字段),单个 RESTful 接口返回数据越来越 臃肿。...接口返回数据越来越臃肿 API 聚合问题,某个前端展现,实际需要调用多个独立 RESTful API 才能获 取到足够数据,导致网络请求次数多 前后端字段频繁改动,导致类型不一致,错误数据类型可能会导致网站出错...查询返回结果就是输 入查询结构精确映射 客户端可以自定义 Api 聚合 如果设计数据结构是从属,直接就能在查询语句中指定;即使数据结构是独 立,也可以在查询语句中指定上下文,只需要一次网络请求...几乎所有GraphQL类型都是对象类型。Object类型有一个name字段,以及一个很重要fields字段。fields字段可以描述出一个完整数据结构。...Union:联合类型用于描述某个字段能够支持所有返回类型以及具体请求真正返回类型 Enum:枚举用于表示可枚举数据结构类型 InputObject:输入对象 List:列表 列表是其他类型封装

    5.2K42

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

    至此,我再也无法回过头来享受使用 REST 工作了。 REST 有什么问题吗? 每个 REST API 都是独特 公平地说,REST 甚至不是一个标准。...端点接受请求体文件内容,因此,它们参数将以 JSON 形式在Dropbox-API-Arg请求头或 arg URL 参数传递。 JSON 在请求头中?...参见 GitHub REST API(至少不是在头中传递 JSON)。 说到过滤,就有趣多了……需要按一个字段过滤吗?没问题,可能是/todos?...对于所有讨论过问题,我倾向于认为,在 CRUD 应用程序,有一种标准方式来生成和使用 API 会非常棒。通用工具和模式、集成测试和文档基础设施将有助于解决技术和组织问题。...不再有多个重量级查询发送到一个刚性 REST API,为了让客户端可以在应用程序 UI 中一次性显示它。你不再受限于一组端点,而是有一个可以查询和修改模式,能够挑选客户端指定字段和对象。

    2.3K30
    领券