掌握 GraphQL 中的参数传递及输入类型

面试官:小伙子,你的数组去重方式惊艳到我了

GraphQL 是一种用于构建 API 的查询语言,它具有强大的查询能力和更少的请求次数。参数传递是 GraphQL 中非常重要的组成部分之一,它可以帮助我们构建更灵活的 API。

在 GraphQL 中,可以通过在查询字段上添加参数来进行参数传递。可以将这些参数嵌入查询语句中,以便在查询中使用它们。此外,您还可以使用 GraphQL 定义的各种输入类型,以处理从客户端到服务器发送的数据。

参数传递

GraphQL 允许在查询和变异操作上使用参数,这些参数具有名称和类型,并且可以很容易地引用它们。例如,以下是一个查询,它为某个用戶查找其某个特定 ID 的所有帖子。

----- ------------------ ---- -
  -------- -------- -
    --
    ----
    ----- -
      --
      -----
    -
  -
-

在上面的例子中,我们使用了名为$userId的参数。该参数被声明为必需变量,并且其类型为 ID 类型。我们可以通过传递一个userId值来执行此查询。

-
  ------------ -
    --------- -------
  --
  -------- ------ ------------------ ---- ---  -------- -------- ---    ----    ------    ----- ---      ----      -------    ---  -------
-

在上面的示例中,我们将用户 ID 设置为“12345”。

输入类型

除了使用参数传递之外,GraphQL 还为开发人员提供了一些标准输入类型,用于处理客户端传递到服务器的数据。通过这些输入类型,您可以确保从客户端发送的数据遵循特定的规则,并且可以进行强类型检查,这样可以避免一些常见的问题。

以下是几个常用的输入类型。

Scalars

Scalars 是一种输入类型,用于表示基本数据类型,例如 String、Int、Float 和 Boolean。如果 GraphQL 服务器期望从客户端接收这些数据类型,可以将它们映射到 Scalars 数据类型上。例如:

---- -------- -
  -------------- ---- ----- --------- ----
-

在上面的示例中,我们将 ID 和 String 类型的参数传递给 updateName 变异操作。

Enum

Enum 是一种输入类型,它用于表示枚举值。它定义了一组可用的值,这些值可以在查询或变异中进行选择。例如:

---- ------ -
  -------
  ---------
  --------
-

---- ---- -
  ------ -------
  ------- -------
-

在上面的示例中,我们定义了一个名为 Status 的枚举类型,它具有三个值:PENDING、PUBLISHED 和 CANCELED。我们在 Post 类型中使用了 Status 类型,在查询中选择一个状态值。

Input

Input 是一种输入类型,用于表示包含复杂数据的对象,这些对象具有多个字段。它类似于常规类型,但用于作为输入参数传递。例如:

----- --------- -
  ------ -------
  -------- -------
-

---- -------- -
  ----------------- ------------ -----
-

在上面的示例中,我们定义了 PostInput 输入类型,并将其用作 createPost 变异操作的参数。

结论

参数传递和输入类型是 GraphQL 中非常重要的组成部分。掌握这些概念可以帮助您更好地构建更灵活的 API,并确保从客户端发送的数据符合预期。如果您想了解更多有关 GraphQL 的信息,请访问 GraphQL 官方文档。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/670114040bef792019b13817


猜你喜欢

  • 如何避免使用 CSS Grid 时发生的排版错乱?

    CSS Grid 是一种强大的布局方式,可以实现复杂的网格布局,但是在使用时很容易发生排版错乱情况,这会影响整个网站的外观和用户体验。本文将介绍如何避免使用 CSS Grid 时发生的排版错乱。

    14 天前
  • 前端性能瓶颈问题分析与解决

    在 Web 开发中,优化页面性能是一项非常重要的工作,因为一个快速响应的网页可以提高用户体验,并且有益于网站的搜索引擎优化。然而,当我们遭遇性能瓶颈时,优化页面性能就成了一项具有挑战性的任务。

    14 天前
  • Serverless 框架下使用 Lambda 函数设置环境变量

    在 Serverless 架构中,Lambda 函数是以无服务器的形式运行的,可以快速创建和部署代码,从而让开发人员专注于代码编写,而不是服务器的管理。在这种情况下,可以使用环境变量来存储非代码配置,...

    14 天前
  • 使用 Enzyme 测试 React 组件时如何处理子组件的嵌套层数

    在开发 React 应用时,我们经常需要测试组件的功能和行为。Enzyme 是 React 的一个测试工具,它可以帮助我们方便地进行组件测试。然而在测试中遇到的问题之一是如何处理组件中嵌套的子组件层数...

    14 天前
  • 如何在 Vue 项目中使用 ESLint

    ESLint 是一款 JavaScript 语法检查工具,可以帮助我们发现代码潜在的问题并提供最佳实践的建议。在 Vue 项目中,使用 ESLint 可以帮助我们遵循统一的代码风格,保证代码的质量和易...

    14 天前
  • 在 Webpack 中使用 TailwindCSS 的最佳实践

    在 Webpack 中使用 TailwindCSS 的最佳实践 TailwindCSS 是一个非常流行的 CSS 框架,旨在提供直接绑定到 HTML 元素的原子类,以实现更快、更轻松的样式开发。

    14 天前
  • 解决 PWA 中部分文件缓存生命周期过短的问题

    PWA (Progressive Web App)可以让你的网站获得 Native App 的体验,它可以离线访问,并且具备本地缓存和通知功能等特性。其中缓存功能是实现离线访问的关键,但是在实际开发中...

    14 天前
  • 使用 Babel 编译 JS 过程中遇到 Node.js 内置模块的问题

    前言 在今天的前端开发中,由于浏览器之间的差异以及 ES 新特性的不断更新,前端开发人员需要不断地学习新知识,才能保证自己的开发水平一直处于一个高水平。而在学习新知识的同时,还需要使用一些工具来让自己...

    14 天前
  • 如何使用 Fastify 和 Redis 构建高效的 RESTful API

    在现代的互联网应用中,RESTful API 已经成为了许多 Web 和移动应用的标配。建立起优秀的 RESTful API,可以帮助 Web 端开发者和应用开发者建立轻松的数据传输通道,同时,也需要...

    14 天前
  • 学习响应式设计中的断点管理

    响应式设计已成为现代网页设计的一项必要技能。它能够帮助我们处理不同设备大小和分辨率下网页的展示效果,提升用户体验。而断点管理是这个过程的重要组成部分。在这篇文章中,我们将深入研究断点管理的概念和实践。

    14 天前
  • 用 Docker 搭建 Web 容器遇到 “Connection refused” 错误怎么办?

    在前端开发中,我们通常会使用 Docker 来搭建 Web 容器来进行开发和测试。然而,在搭建过程中,遇到 “Connection refused” 错误是一个比较常见的问题,这个错误可能会让开发者头...

    14 天前
  • 创建 Sequelize 错误的解决方案

    Sequelize 是一个优秀的 Node.js ORM(对象关系映射)库,它可以将 JavaScript 对象和 SQL 数据库之间建立映射关系,方便开发者在 Node.js 应用中操作数据库。

    14 天前
  • TypeScript 中如何限定函数参数的个数

    TypeScript 是一种强类型的 JavaScript 超集,它扩展了 JavaScript 语言,提供了静态类型检查、类、接口、命名空间等高级语言特性。在 TypeScript 中,我们可以借助...

    14 天前
  • ECMAScript 2018(ES9)带来的重大变化

    ECMAScript 2018 (ES9) 是JavaScript的最新版本,引入了一些重要的功能和语言增强,其中包括异步迭代器,rest/spread 属性,正则表达式的命名捕获组等等。

    14 天前
  • 解决 Deno 中 WebSocket 报错的问题

    引言 Deno 是一个基于 JavaScript 和 TypeScript 的运行时环境,并且支持运行客户端程序。其中,Deno 的 WebSocket API 提供了方便易用的 WebSocket ...

    14 天前
  • Kubernetes 中,如何设置 Pod 的 “restartPolicy”?

    Kubernetes 是一个开源的容器编排引擎,可以管理容器化的应用程序,是部署和管理容器化应用程序的理想选择。而且,Kubernetes 就像一把钥匙,可以解决各种不同的容器编排挑战,为容器编排提供...

    14 天前
  • 通过 GraphQL 实现多语言支持的方法

    对于全球化的应用程序而言,多语言支持是一个关键的功能。为不同的目标市场提供本地化的语言支持,可以提高应用程序的可用性和用户满意度。在前端开发中,使用 GraphQL 是一个有效的方式来实现多语言支持的...

    14 天前
  • Material Design 中的图标规范详解

    Material Design 是 Google 在设计方面的一种视觉语言,它提供了一系列类似于卡片、按钮、文本框、图标等组件,以及一些常见场景的设计模式,使得开发者可以更加方便、快速地进行设计和开发...

    14 天前
  • 优秀的 PWA 应用分享及深度剖析

    什么是 PWA? PWA(Progressive Web Apps)是一种全新的应用程序类型。它使用现代 web 技术为用户提供良好的使用体验,同时还可以在离线状态下运行。

    14 天前
  • 掌握 ES11 中的 top-level await

    在传统的 JavaScript 中,await 关键字只能在 async 函数内部使用。但是,在 ES11 中,引入了 top-level await,这意味着我们可以在模块层级使用 await。

    14 天前

相关推荐

    暂无文章