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

Graphql:如何在解析器中获取类型的字段参数?

在解析器中获取类型的字段参数,可以通过GraphQL的解析器函数的第三个参数info来实现。info参数包含了当前解析器的上下文信息,其中包括了字段的名称、参数、返回类型等。

在解析器函数中,可以通过info参数的fieldName属性获取当前解析的字段名称。通过info参数的fieldNodes属性可以获取到当前解析的字段的AST节点,从而可以进一步获取字段的参数。

以下是一个示例代码,演示了如何在解析器中获取类型的字段参数:

代码语言:javascript
复制
const resolvers = {
  Query: {
    getUser: (parent, args, context, info) => {
      const fieldName = info.fieldName; // 获取当前解析的字段名称
      const fieldNodes = info.fieldNodes; // 获取当前解析的字段的AST节点

      // 遍历字段的AST节点,查找参数
      const arguments = fieldNodes[0].arguments;
      const params = {};
      arguments.forEach(argument => {
        const paramName = argument.name.value;
        const paramValue = argument.value.value;
        params[paramName] = paramValue;
      });

      // 根据字段名称和参数进行相应的处理
      if (fieldName === 'getUser') {
        // 处理getUser字段的逻辑,可以使用params对象中的参数
        // ...
      }

      // 返回结果
      // ...
    }
  }
};

在上述示例中,我们通过info.fieldName获取了当前解析的字段名称,然后通过info.fieldNodes获取了当前解析的字段的AST节点。接着,我们遍历了字段的AST节点,提取了参数的名称和值,并存储在params对象中。最后,根据字段名称和参数进行相应的处理。

需要注意的是,上述示例中的代码仅为演示目的,实际使用时需要根据具体的业务逻辑进行相应的处理。

关于GraphQL的更多信息,你可以参考腾讯云的产品介绍页面:腾讯云GraphQL

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

Addresses 还定义了他自己几个字段。(顺便说一下,GraphQL 模式不仅有对象,字段和标量类型,还有更多,你也可以合并接口,联合和参数以构建更复杂模型,但本文中不会介绍)。...另一部分涉及实际获取数据,这是通过使用解析器完成解析器是一个返回字段基础值函数。 让我们看一下如何在 Node.js 实现解析器。...} } } 这个解析器需要两个参数:一个代表父对象(在最初根查询,这个对象通常是未使用),一个包含传递给你字段参数 JSON 对象。...GraphQL 类型功能会给查询过程提供严格校验,你甚至可以尝试请求不存在字段。...为了解决这个问题,我们需要修改解析器函数。除了字段参数外,解析器还可以访问它父节点,以及传入特殊上下文值,这些值可以提供有关当前已认证用户信息。

8.3K40

Salesforce 构建可扩展 API 旅程

尽管大多数 API 都实现了版本管理,但是 GraphQL 是一个无版本化 API。因为它只会返回明确请求数据,所以我们可以通过添加新类型以及类型字段来增加功能,避免带来破坏性变更。...每个 GraphQL 服务会定义一组类型GraphQL 模式中最基本组件是对象类型,它代表了一种我们可以从服务获取对象。...简单来讲,解析器就是由开发人员提供一个函数,用来解析模式定义每个字段并从配置资源(如数据库、其他 API 或缓存等)返回值。...在本例,我们 Query 类型提供了一个名为 getClassificationInsightsByUser 字段,它接受 emailAddresses 参数。...{ // 在提交查询获取参数 val emailAddresses = env.getArgument> (EMAIL_ADDRESSES) //

99710

防止你GraphQL API被恶意查询

在这篇文章,他描述了他们是如何在攻击中保护GraphQL API。 使用GraphQL,你可以随时查询想要内容。 这对于使用API来说是惊人,但也具有复杂安全隐患。 ...(尽管DataLoader可能会缓解数据库压力,但网络和处理压力不会) 我们没有将第一个参数类型设置为Int(允许任意数量),而是使用graphql-input-number创建了一个自定义标量,该标量将最大值限制为...也就是说,也许graphql-validation-complexity对你来说已经足够了,试试吧! 它工作方式是指定解析特定字段类型相对成本。 ...它也有乘法支持,所以如果你要求列表任何嵌套字段将乘以分页数量,这是非常整洁。...你可以指定某个字段复杂程度,乘以哪个参数以及最大成本,而graphql-cost-analysis会为你完成其余工作。

1.8K10

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

这只是为了简单起见, 也可以将人员创建与地址相结合。为了修改数据,这里必须使用类型定义address字段 为AddressInput类型,这是因为 mutation 仅适用于输入类型。...带有@QueryMapping注释函数将成为查询处理程序。 查询名称会自动映射到函数名称,或者使用 @QueryMapping接口value参数(在本例为person)显式定义它。...然后,我们使用指定参数名称@Argument注释来定义输入。 @SchemaMapping将成为查询嵌套字段处理程序。映射基于函数名称本身(如上所示)或通过设置值参数(如下所示)。...GraphQL 错误处理 首先看看当我们遇到错误时会发生什么。 为此,我们在调用获取电话字段时,抛出一个异常。...每个错误都有一个错误消息、一个路径和一个查询中发生错误位置,指示哪个字段导致了错误。 出现错误时,默认程序返回上述值。 我们可以通过创建自己错误处理程序解析器来自定义返回错误方式。

2.1K40

与我一起学习微服务架构设计模式8—外部API模式

使用GraphQL实现API Gateway 实现支持多种客户端REST APIAPI Gateway非常耗时,你可能需要考虑使用基于图形API框架,GraphQL。...简单情况下,查询文档包含查询名称,参数值及要返回结果对象字段。 把模式连接到数据源 当GraphQL服务器执行查询时,必须从一个或多个数据存储检索所请求数据。...通过将解析函数附加到模式定义对象类型字段,可以将GraphQL模式与数据源相关联。GraphQL通过调用解析器函数检索数据,以此实现API组合模式。...GraphQL通过递归调用Query文档中指定字段解析器函数来执行查询。首先,它执行查询解析器,然后递归调用结果对象层次结构字段解析器。...缓存会利用先前获取同一对象结果,以避免不必要重复调用。 为了让客户端调用GraphQL,你需要将它与Web框架集成,Express Web

1.3K30

实践微服务,第14部分:GraphQL

3.1模式,类型字段 模式定义了可以在GraphQL查询中使用类型字段GraphQL不受任何特定DSL或编程语言束缚。...但是,当我们引入解析函数,参数并将几个声明类型链接到一个组合对象时,它会变得更加复杂。...这个“Account”字段由一个单一GraphQL类型“accountType”组成 - 例如我们上面定义类型。 “Account”定义了两个可用于查询帐户参数 - id和name。...4.解析器实现和测试 那么,现在我们已经将模式放在一起了,我们如何将底层数据模型绑定到在“解析器参数声明解析函数?...Omitted for brevity ... }, 该查询列出了“帐户”类型可用字段及其类型,包括列表LIST类型类型,例如AccountEvent。

2.5K40

GraphQL在现代Web应用应用与优势

GraphQL是一种现代API查询语言,它在现代Web应用得到了广泛应用,因为它提供了一种高效、灵活且强大方式来获取数据GraphQL基础快速应用示例:1....查询结构:字段参数查询结构由字段参数组成。在上面的查询示例,user是字段,id和email是user字段字段参数id: 1用于定制查询。4....这就是GraphQL查询、类型系统和层次结构在实际应用体现。...: Post}在Query类型,我们定义了获取单个用户、所有用户、单篇帖子和所有帖子查询。而在Mutation类型,我们定义了创建新用户和新帖子操作。...复杂查询优化利用GraphQL字段解析器和数据加载器进行性能优化。

400

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

,我们可以使用 @client 指令来引用要基于一个客户端模式从本地缓存获取属性。...在 Apollo Server 端,这些 API 调用将控制权转交给负责使用 ORM、原始 SQL、缓存、其他 RESTfulAPI 或任何你想到方法来获取数据解析器。...通过 Apollo Federation,我们可以绘制并公开由多个 GraphQL 端点组成单个数据图 在 Federation ,你可以组成模式并解析其他服务 / 限界上下文中字段。...收到请求时,将从相应服务解析这些字段。 对于规模庞大组织来说,这种需求并不罕见。 7单一端点 SOLID 原则开闭原则指出: “组件 / 系统 / 类应对扩展开放,但对修改封闭”。...在架构层面,由于 GraphQL 仅向客户端公开单个端点,因此它满足了这一原则。 客户端隐藏了字段解析机制所有复杂性,它只需关注如何在 GraphQL 服务器之上构建即可。

2.1K20

Coursera GraphQL 之旅

在生产环境应用 GraphQL 封装 REST API 过程很简单——我们构建了一些实用程序来执行下游 REST 请求,从而在解析器获取数据,并制定了一些关于如何将现有模型转换为 GraphQL...首先,我们构建了少量 GraphQL 解析器,然后在生产环境启动一个 GraphQL 服务器,以调用下游 REST 接口请求我们资源。...幸运是(或许还带有一点远见),我们 REST 框架能给我们建立自动化层所需一切: 我们架构每项服务均能够动态地为我们提供其运行 REST 资源列表 对于单个资源,我们可以内省端点列表和参数...关联资源 我们采用 GraphQL 主要原因之一就是希望能在单次服务器往返获取我们页面需要所有数据。...为了获取这些数据,我们可以通过 id 来查询教师信息,这里 id 可以使用课程已经提供 InstructorIds 字段

1.2K40

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

这是一个问题,因为我们为了获取一条信息进行了多次往返请求。GraphQL 帮助解决了这个问题,因为它允许我们在一次往返获取所需一切。...有时,新版本文档或参数会发生更改。有了 GraphQL,我们可以发送更新,客户端不再需要担心版本更新。...使用 GraphQL,我们可以获得字段检测,并清楚了解哪个解析器花了多长时间、常见错误以及调用了哪些字段。这个字段级检测有助于智能地弃用不再使用字段。...这些标准定义了命名约定、GraphQL 类型、请求头标准、指令标准和异常处理技术。 所有 GraphQL 操作都需要指定特殊指令,这些指令描述查询、突变和字段所有授权要求。...图片来源:Possessed Photography on Unsplash 我们仍在创建一种标准方法来应对 GraphQL 技术挑战,异常处理、身份认证、文件处理和批处理。

3K20

什么是GraphQL?【Programming】

查询语言 Graphql 作为一种查询语言似乎是合理——“ QL”似乎非常重要,因此名字也有它名字。 但我们在质疑什么呢? 查看样例查询请求和相应响应可能会有所帮助。...所有GraphQL服务器都由两个定义执行引擎结构和行为核心组件组成:分别是模式和解析器。...Graphql模式是一种自定义类型化语言,它公开哪些查询是允许(有效),并由GraphQL服务器实现处理。...客户机可以通过用户查询请求用户任何字段,而GraphQL服务器将在其响应只返回这些字段。通过使用强类型模式,GraphQL服务器可以验证传入查询,以确保它们基于已定义模式是有效。...一旦查询被确定为有效,解析器将对它进行GraphQL服务器处理。一个解析器函数回退每个GraphQL类型每个字段

86800

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

这个请求体显示了GraphQL主要构建块,它指定了你尝试获取数据。 字段(Fields):客户端请求数据单元,最后作为JSON响应数据一个字段。...请注意,它们始终称为“字段”,无论它们所在层次有多深。在你查询,对根节点字段处理和最底层字段应该是一样参数(Arguments):一组与特定字段关联键值对。...请注意,参数可以显示在任何字段,即使是嵌套层次很深字段。 为了让你以非常简洁形式定义一个GraphQL查询,上面的栗子是GraphQL一种非常简单形式。...skip 指令表示在 if 参数为 true 时忽略片段字段。...指令参数(Directive arguments): 与字段参数类似,只不过它们是被执行引擎处理,而不是传递给字段解析器(field resolver)。

2.8K20

GraphQL 实践与服务搭建

可以参阅 BFF——服务于前端后端 但这些接口一般来说都比较重,里面有很多当前页面并不需要字段,那还有没有一种请求:客户端只需要发送一次请求就能获取所需要字段 有,也就是接下来要说 GraphQL...请求进行查询,其集中 API http://localhost:3000/graphql,所有的操作都通过这个接口来执行,这会在后面的操作在展示到。...查询 personID 为 2 Person 并且只获取 name,eyeColor、skinColor、hairColor 字段 从上面查询案例其实就可以发现,我只需要在 person 写上想要获取字段...避免了返回结果不必要数据字段。...return 'hello world'; } } 在 graphql resolver 叫解析器,与 service 类似(也需要在 @Module 通过 providers 导入)。

5.1K10

GraphQL 从入门到实践

GraphQL 操作类型可以是 query、mutation 或 subscription,描述客户端希望进行什么样操作 query 查询:获取数据,比如查找,CRUD R mutation...Query 开始查找,找到对象类型(Object Type)时则使用它解析函数 Resolver 来获取内容,如果返回是对象类型则继续使用解析函数获取内容,如果返回是标量类型(Scalar Type...对象类型:用户在 schema 定义 type 标量类型GraphQL 内置有一些标量类型 String、Int、Float、Boolean、ID,用户也可以定义自己标量类型 比如在 Schema...args:查询传入参数 context:提供给所有解析器上下文信息 info:一个保存与当前查询相关字段特定信息以及 schema 详细信息值 解析函数返回值可以是一个具体值,也可以是...一些常用解决方案 Apollo 可以帮省略一些简单解析函数,比如一个字段没有提供对应解析函数时,会从上层返回对象读取和返回与这个字段同名属性。

2.5K31
领券