Project Icon

graphql-request

简洁高效的GraphQL客户端 支持Node和浏览器

graphql-request是一个轻量级GraphQL客户端,适用于Node和浏览器环境。它提供基于Promise的API和TypeScript支持,是纯ESM包。这个客户端适合小型脚本和简单应用,不含缓存和前端框架集成,保持最小化的包大小和API。支持异步/await语法,并提供错误策略和自定义JSON序列化等配置选项。

graphql-request

支持 Node 和浏览器的简约 GraphQL 客户端,适用于脚本或简单应用程序。

GitHub Action npm 版本

亮点

  • 简单轻量的 GraphQL 客户端
  • 基于 Promise 的 API(可与 async / await 配合使用)
  • 纯 ESM 包
  • 一流的 TypeScript 支持
    • 包括 TypedDocumentNode
  • 同构(在 Node 和浏览器中均可使用)

安装

npm add graphql-request graphql

TypeScript 设置

本包使用 package.exports。因此,如果你是 TypeScript 用户,你必须:

  1. tsconfig.json 中的 moduleResolution 设置为 "bundler""node16"/"nodenext"
  2. package.json 中的 type 设置为 "module"

快速开始

使用静态请求函数发送 GraphQL 文档:

import { gql, request } from 'graphql-request'

const document = gql`
  {
    company {
      ceo
    }
  }
`
await request('https://api.spacex.land/graphql/', document)

可以为该函数传递一个配置对象,以处理更复杂的情况:

await request({
  url,
  document,
  variables,
  requestHeaders,
})

还提供了一个类,用于构建你自己的实例:

import { gql, GraphQLClient } from 'graphql-request'

const document = gql`
  {
    company {
      ceo
    }
  }
`
const endpoint = 'https://api.spacex.land/graphql/'
const client = new GraphQLClient(endpoint)
await client.request(document)

示例

Node 版本支持

我们仅(正式)支持以下状态的 Node.js 版本

  • 当前版本
  • 长期支持版本
  • 维护版本(且尚未到达生命周期结束)

例如,在 2023 年 10 月 24 日,这意味着支持以下版本:18、20、21。

任何仅存在于不受支持的 Node.js 版本中的问题都将被拒绝(不予处理)。

参考

⚠️ 此参考资料不完整。更多参考资料请查看 示例

配置

ErrorPolicy

默认情况下,当收到错误时,GraphQLClient 将抛出异常。但有时你可能仍想解析收到的(部分)数据。 你可以在 GraphQLClient 构造函数中定义 errorPolicy

const client = new GraphQLClient(endpoint, { errorPolicy: 'all' })
None(默认)

完全不允许错误。如果收到 GraphQL 错误,客户端将抛出异常。

Ignore

忽略收到的错误,解析过程如同没有发生错误一样

All

同时返回错误和数据,仅适用于 rawRequest

IgnoreOperationName

引入 OperationName 是为了解决这里报告的问题 支持操作名称, 然而,在某些情况下,请求中可能不需要这些信息。在这种情况下,你可以考虑忽略 operationName,以避免当文档以字符串格式提供时,当前由解析操作执行的提取步骤。

默认情况下,GraphQLClient 会尝试从文档中提取 operationName。 你可以在 GraphQLClient 的构造函数中定义 excludeOperationName 以避免在不需要时进行提取过程。如果你不使用 operationName 并希望尽可能优化查询以减少计算量,这可能会很有用,特别是在我们使用字符串格式的文档以减少包大小的情况下。

// 不忽略操作名称的示例
const client = new GraphQLClient(endpoint, {
  method: 'POST',
})
// 忽略操作名称的示例
const client = new GraphQLClient(endpoint, {
  method: 'POST',
  excludeOperationName: true,
})

知识库

为什么文件上传功能被移除了?它会回来吗?

这个问题中,我们决定使这个库更稳定和易于维护。原则上,这个功能仍在本库的范围内,当我们有时间正确实现这个功能时,它将会回归。

为什么我必须安装 graphql

graphql-request 使用 graphql 包暴露的方法来处理一些内部逻辑。此外,对于 TypeScript 用户来说,graphql 包中的一些类型被用来提供更好的类型定义。

我需要将 GraphQL 文档包装在 graphql-request 导出的 gql 模板中吗?

不需要。它的存在只是为了方便,让你可以获得自动格式化和语法高亮等工具支持。如果出于某些原因需要,你也可以使用 graphql-tag 中的 gql

与 Apollo、Relay 等其他客户端相比,graphql-request 有何不同?

graphql-request是最简单、最小化的GraphQL客户端。它非常适合小型脚本或简单的应用程序。

与Apollo或Relay等GraphQL客户端相比,graphql-request没有内置缓存,也没有与前端框架的集成。它的目标是尽可能保持包和API的最小化。

项目统计

包安装量

graphql-request的NPM使用趋势

仓库统计

Alt

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号