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

怎样使用 apollo-link-state 管理本地数据

GraphQL 并不在乎请求是要发送给一个 gRPC 服务器,或是 REST 端点,又或是客户端缓存。GraphQL 是一门针对数据的通用语言,与数据的来源毫无关联。...我们可以使用 GraphQL mutation 来表述应用状态的变化过程,而不是去发送某个 action。在查询应用状态时,GraphQL query 也能以一种声明式的方式描述出组件所需要的数据。...尽管不是必需的参数,不过预热缓存是一个很重要的步骤,传入的 default 使得组件不会因为查询不到数据而出错。 . 以上代码的 defaults 代表了 Apollo cache 的初始值。...那么我们应当如何查询更新缓存中的数据呢?这便是 Resolver 发挥作用的地方了。...以上代码使用 @client 指令查询 Apollo cache。 在我们 最新的文档页中,可以找到更多的例子,以及一些将 apollo-link-state 集成在应用中的小贴士。

2.3K100

如何在纯 JavaScript 中使用 GraphQL

你的 GraphQL 请求可以发送三段数据:query、operationName 和 variables。 query 是必需的,并且包含了(你猜对了)GraphQL 查询。...例如,如果你的查询需要一个变量 id(将在查询中显示为 $id),则需要按以下方式发送变量: { "id":1 } operationName 也是可选的。...当查询包含多个命名操作的查询时,它用于指定要运行的操作。 如果你将一个 GraphQL 作为一个 GET 请求发送,则需要将以上内容作为查询参数传递。...其次,更重要的是我无法访问环境变量。需要强调的是,如果你的 API 需要传递某种 API 密钥或凭据,那么你不会希望在客户端执行这一操作,因为你的凭据将被公开。...显然,一般来说你不会想要简单地向用户显示查询结果,因此让我们看一下如何使用返回的数据。 使用 GraphQL 查询响应 GraphQL 的一大优点是,它的响应只是纯 JSON,因此数据使用起来很容易。

3.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

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

即使完成了,团队会不会忘记更新规范并通知客户端开发人员更新内容? 在客户端或服务器上的所有验证逻辑,你确定都是正确的吗?理想情况下,你希望它在两边都得到验证,对吧?维护所有这些自定义代码非常有趣。...文档单独存储意味着,它经常不会更新,特别是当更改是一个小的、但会破坏客户端的更改时。 如果你不使用 Swagger,这可能意味着你需要维护专门的测试基础设施。...不再有多个重量级的查询发送到一个刚性的 REST API,为了让客户端可以在应用程序 UI 中一次性显示它。你不再受限于一组端点,而是有一个可以查询和修改的模式,能够挑选客户端指定的字段和对象。...description isCompleted } } } GraphQL 客户端库根据模式自动解析和验证查询,然后将其发送GraphQL 服务器。...如果你的 GraphQL 服务器足够聪明,它将不会对你不需要的字段运行数据库查询,而且有些库好到免费提供这种查询

2.3K30

GraphQL详解

但一般来说,开发新接口往往是后端开发人员会选择的方案,因为这个方案对现有系统的影响最低,不会有额外的风险。 修改旧接口删除冗余数据的方案往往开发人员不会选择,这是为什么呢?...改动旧接口成本太高,所以往往不会被采取。...输入类型(Input Types):更新数据时有用,与常规对象只有关键字修饰不一样,常规对象时 type 修饰,输入类型是 input 修饰。...比如定义了一个输入类型: 前端发送变更请求时就可以使用(通过参数来指定输入的类型): 所以,这样面向对象的设计方式,真的对后端开发人员特别友好!...客户端实现 在客户端,Graphql Client目前有下面的语言支持: C# / .NET Clojurescript Elm Flutter Go Java / Android JavaScript

2.5K00

GraphQL 名词 101:解析 GraphQL查询语法》【译】

如果你不仅仅是用GraphQL执行查询操作,或是希望传递动态变量GraphQL查询中,你就需要利用到这些新的GraphQL特性。... 操作类型(Operation type):共三种类型:查询(query)、更新(mutation)、订阅(subscription)。它描述了你试图进行何种操作。...变量定义(Variable definitions):当客户端向GraphQL服务器发送查询时,会存在查询文档不变,当某些字段会动态变化的情况。这些就是查询中的变量。...变量使用特定的序列化协议(在目前的 GraphQL 服务实现中,通常是使用JSON )通过查询文档独立传输。...指令(Directives)指令是独立于GraphQL server之外的一个附加功能。指令不会对结果的值产生影响,但是会影响哪些结果会被返回,也许还会影响这些结果是如何被执行的。

2.9K20

graphw00f:一款功能强大的GraphQL服务器引擎指纹识别工具

关于graphw00f: graphw00f是一款针对GQL节点的GraphQL指纹识别工具,该工具可以混合发送良性和恶意查询请求,以帮助广大研究人员识别和确定目标应用程序背后的GraphQL引擎。...精心构建的查询请求会导致不同的GraphQL服务器实现对查询、突变和订阅做出不同的响应,以实现我们对后端引擎进行指纹识别并区分不同的GraphQL实现。...- Go gqlgen - Go WPGraphQL - PHP GraphQL API for Wordpress - PHP Ruby - GraphQL graphql-php - PHP Hasura...- Haskell HyperGraphQL - Java graphql-java - Java Juniper - Rust Sangria - Scala Flutter - Dart Diana.jl...:8484/graphql... [*] Found GraphQL... [*] Attempting to fingerprint... [*] Discovered GraphQL Engine

1.1K20

我为什么要放弃RESTful,选择拥抱GraphQL

但一般来说,开发新接口往往是后端开发人员会选择的方案,因为这个方案对现有系统的影响最低,不会有额外的风险。 修改旧接口删除冗余数据的方案往往开发人员不会选择,这是为什么呢?...改动旧接口成本太高,所以往往不会被采取。...输入类型(Input Types):更新数据时有用,与常规对象只有关键字修饰不一样,常规对象时 type 修饰,输入类型是 input 修饰。...比如定义了一个输入类型: 前端发送变更请求时就可以使用(通过参数来指定输入的类型): 所以,这样面向对象的设计方式,真的对后端开发人员特别友好!...客户端实现 在客户端,Graphql Client目前有下面的语言支持: C# / .NET Clojurescript Elm Flutter Go Java / Android JavaScript

2.4K40

GraphQL

但一般来说,开发新接口往往是后端开发人员会选择的方案,因为这个方案对现有系统的影响最低,不会有额外的风险。 修改旧接口删除冗余数据的方案往往开发人员不会选择,这是为什么呢?...改动旧接口成本太高,所以往往不会被采取。...输入类型(Input Types):更新数据时有用,与常规对象只有关键字修饰不一样,常规对象时 type 修饰,输入类型是 input 修饰。...比如定义了一个输入类型: 前端发送变更请求时就可以使用(通过参数来指定输入的类型): 所以,这样面向对象的设计方式,真的对后端开发人员特别友好!...客户端实现 在客户端,Graphql Client目前有下面的语言支持: C# / .NET Clojurescript Elm Flutter Go Java / Android JavaScript

2.6K65

为什么我劝你放弃了Restful API?

但一般来说,开发新接口往往是后端开发人员会选择的方案,因为这个方案对现有系统的影响最低,不会有额外的风险。 修改旧接口删除冗余数据的方案往往开发人员不会选择,这是为什么呢?...GraphQL支持的数据操作 GraphQL对数据支持的操作有: 查询(Query):获取数据的基本查询。 变更(Mutation):支持对数据的增删改等操作。...输入类型(Input Types):更新数据时有用,与常规对象只有关键字修饰不一样,常规对象时 type 修饰,输入类型是 input 修饰。...比如定义了一个输入类型: 前端发送变更请求时就可以使用(通过参数来指定输入的类型): 所以,这样面向对象的设计方式,真的对后端开发人员特别友好!...客户端实现 在客户端,Graphql Client目前有下面的语言支持: C# / .NET Clojurescript Elm Flutter Go Java / Android JavaScript

2.7K20

API接口架构REST vs GraphQL

REST 案例 假设你正在创建一个博客站点, 在首页上,你会显示最新文章的摘要,包括标题、图片和简短描述。为了提供这些数据,你需要在后端服务器上查询数据库或者缓存来获取结果。...这些冗余数据在频繁调用和发送大量数据的时候会造成服务器的资源浪费。 嵌套数据 有些时候我们通过一个接口要返回更多的数据的时候,我们就会使用嵌套数据。 例如,我们可能需要一个带有嵌套评论的文章。...请注意,在 GraphQL 响应中接收到的数据将与请求它的查询具有相同的结构。...反过来,这意味着 GraphQL 本质上是自记录的。一旦字段、类型或查询发生更改,基于架构的文档可以自动更新。 没有版本控制的 API 每次应用更改时,API 可能也需要更改。...使用 GraphQL,可以从模式中删除不推荐使用的字段,而不会影响现有查询。这为应用程序提供了对新功能的持续访问,并鼓励更清洁、更可维护的代码。

1.6K30

用TS+GraphQL查询SpaceX火箭发射数据

我们能够编写与使用它们的组件并存的查询,并且 UI 能够准确地请求它要呈现的内容。 在使用 REST API 时,我们所能找的的文档有可能不是最新的。...在 query.ts 文件中,可以从 playground 中发送查询并将其放在 gql 字符串中。...由于这将通过用户交互动态生成,所以需要用到 GraphQL 变量。我们还可以在 playground 上测试带变量查询。...在查询名的后面,你可以通过使用前缀为$及类型去指定变量,然后在查询体中,你可以使用该变量。对于我们的查询,通过传递 $id 变量来设置启动的id,该变量的类型为String!。 ?...将ID作为查询变量传递 我们传入 id 作为变量,它对应于 LaunchList 查询中的 flight_number。

3K20

GraphQL:现代API设计的革新

通过GraphQL,客户端可以明确指定需要的数据结构,服务器则根据请求返回对应的数据。GraphQL的核心思想是客户端通过单一端点发送查询,服务器返回客户端所请求的数据。...查询可以精确指定需要的数据结构,这样服务器只返回客户端需要的数据,从而减少了冗余数据的传输。1.4 变更(Mutation)变更用于修改服务器端的数据,例如创建、更新或删除数据。...2.4 实时数据通过订阅,GraphQL可以实现实时数据更新,服务器主动将数据变化通知客户端,这对于实时应用非常重要。...实时性:通过订阅可以实现实时数据更新,适用于实时应用。4.2 缺点复杂性:对于简单的API,GraphQL可能显得过于复杂,需要学习和理解其概念和用法。...我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

10310

GraphQL的了解

什么是GraphQLGraphQL是Facebook开源的API查询语言,类似于数据库中的SQL。...作为比较,RESTful API依赖于后端隐式的被动的数据约定,GraphQL更加显式,在获取数据和更新数据时更加主动,所见即所得。GraphQL官方网址 RESTful的一些不足 1....然后,需求又变化了,产品希望在加上这篇文章的评论,这时前端需要继续调用/comment/:aid来拉取评论列表 对于Web前端而言,由于ajax技术的存在,这种的请求数据方式,也就开发上稍微麻烦些,并不会造成太大的问题...GraphQL优点 1. 所见即所得 查询的返回结果就是输入的查询结构的精确映射 2....代码即文档 GraphQL会把schema定义和相关的注释生成可视化的文档,从而使得代码的变更,直接就反映到最新的文档上,避免RESTful中手工维护可能会造成代码、文档不一致的问题。 4.

67220

1.1 REST

1.3 GraphQL GraphQL 是 API的查询语言。最近越来越火。它由Facebook于2012年开始开发,2015年被开源了。...相对REST和RPC,GraphQL有下面几个优势: 节省了多重的请求往返,GraphQL可以一次把所需的关联数据全部查询出来。不会存在例如N+1这样的问题 避免了API版本问题。...你可以随时添加字段和类型,不会影响现有的查询。可以标记弃用。通过Log可以追踪出哪些字段被谁使用,如果字段没人再去使用,就可以移除它了。 Payload比较小。...REST和RPC的响应都包含客户端发送一些不需要的数据。而使用GraphQL的话,客户端得到的响应就是它所请求的那些东西,不多不少。 强类型。...下图就是Github的GraphQL API: GraphQL的缺点就是它为服务器添加了许多复杂性,服务器需要额外的工作来处理这些复杂的查询。根据查询内容的不同,性能也是一个变数.

1.3K21

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

1.3 GraphQL GraphQL 是 API的查询语言。最近越来越火。它由Facebook于2012年开始开发,2015年被开源了。...相对REST和RPC,GraphQL有下面几个优势: 节省了多重的请求往返,GraphQL可以一次把所需的关联数据全部查询出来。不会存在例如N+1这样的问题 避免了API版本问题。...你可以随时添加字段和类型,不会影响现有的查询。可以标记弃用。通过Log可以追踪出哪些字段被谁使用,如果字段没人再去使用,就可以移除它了。 Payload比较小。...REST和RPC的响应都包含客户端发送一些不需要的数据。而使用GraphQL的话,客户端得到的响应就是它所请求的那些东西,不多不少。 强类型。...GraphQL的缺点就是它为服务器添加了许多复杂性,服务器需要额外的工作来处理这些复杂的查询。根据查询内容的不同,性能也是一个变数. 综上所述,那么什么时候应该用哪种Web API呢?

3K50
领券