十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

10 分钟跑通 GraphiQL:从安装 GraphQL IDE 到真实调试

10 分钟跑通 GraphiQL:从安装 GraphQL IDE 到真实调试 10 分钟跑通 GraphiQL从安装 GraphQL IDE 到真实调试【免费下载链接】graphiqlGraphiQL the GraphQL LSP Reference Ecosystem for building browser IDE tools.项目地址: https://gitcode.com/GitHub_Trending/gr/graphiql后端同事交给你一个 GraphQL 端点地址最快的验证方式是打开 GraphiQL 这个浏览器内的 GraphQL IDE立刻写查询。GraphiQL 把查询编辑、实时语法校验、Schema 文档浏览和请求执行整合在同一个界面里。第 3 节是可直接复制运行的 GraphiQL 安装步骤第 4 节的实操任务可作使用指南按需查阅。GraphiQL 适合哪些场景每次拿到一个新的 GraphQL 端点你通常要处理三件事请求怎么发、字段结构怎么查、查询写得对不对。下面三个场景最典型使用场景纯手工的做法用 GraphiQL 之后验证新开发的服务每次手写 curl 脚本或换第三方工具请求格式凭记忆编辑器里写查询点执行按钮右侧面板返回响应排查字段和类型含义复制 Schema 全文在文档页面里逐个搜索文档面板按类型列出全部字段支持搜索并展示描述修正写错的查询发一次请求才发现语法错误再回到编辑器改错误字段实时下划线标记悬停即显示原因编辑能力由仓库中的 graphql-language-service 提供覆盖语法高亮、自动补全、实时错误报告。在 Vite 项目中跑通第一个 GraphiQL最短路径是 Vite 示例的工程结构参考 examples/graphiql-vite/。下面这条命令序列初始化一个 React 工程并装上 GraphiQLreact、react-dom、graphql 是 graphiql 的 peer dependenciesgraphiql/toolkit 用于创建请求函数。# 用 Vite 初始化 React 工程 npm create vitelatest graphiql-app -- --template react cd graphiql-app # 安装 GraphiQL 及其依赖 npm install graphiql react react-dom graphql graphiql/toolkit npm run dev接下来替换默认的 App.jsxcreateGraphiQLFetcher创建一个指向你后端端点的 fetcher传给GraphiQL组件。成功后浏览器里左侧是查询编辑器、右侧是响应面板最左边一列出现文档历史等图标说明组件已正常挂载。// src/App.jsx import { createGraphiQLFetcher } from graphiql/toolkit; import { GraphiQL } from graphiql; import graphiql/style.css; const fetcher createGraphiQLFetcher({ url: http://localhost:4000/graphql, // 换成你自己的端点地址 }); export default function App() { return GraphiQL fetcher{fetcher} /; }首次渲染时 GraphiQL 会自动向端点发送 introspection 查询用返回的 Schema 构建文档面板请求失败时右侧会直接显示错误。如果你暂时没有自己的端点可以直接复制 examples/graphiql-vite/src/App.jsx 中连接公开演示端点的 fetcher 写法。其他集成方式按需选一种即可单文件 HTML 通过 CDN 引入、无需构建工具看 examples/graphiql-cdn/index.htmlWebpack、Parcel、create-react-appexamples/ 目录下各有对应示例工程从源码构建并贡献代码按仓库根目录 DEVELOPMENT.md 的流程操作需 yarn 4 与 node 18完成三个真实任务写出第一条查询并看到实时报错在编辑器输入{键入字段名时弹出自动补全列表覆盖字段、参数和类型故意输入一个 Schema 里不存在的字段位置出现红色下划线悬停显示具体错误点击顶部工具栏的播放按钮发送请求右侧面板返回 JSON 响应点击左侧边栏文档图标在搜索框输入类型名定位字段说明。预期结果错误在请求发出前就被标记出来你不再依赖运行响应来定位问题。提示输入非标量字段类型为对象的字段时编辑器会自动补全子字段的大括号结构不用手动敲。配置带鉴权请求头的 fetcher真实接口通常要身份凭证最直接的写法是把 header 直接传给createGraphiQLFetcher之后所有请求包括 introspection都会自动带上它。import { createGraphiQLFetcher } from graphiql/toolkit; const token localStorage.getItem(token); // 从你自己的登录态读取 const fetcher createGraphiQLFetcher({ url: http://localhost:4000/graphql, headers: { Authorization: Bearer ${token} }, // 所有请求携带凭证 });预期结果右侧能正常返回数据、文档面板列出类型说明鉴权链路已通。持久化查询状态并用历史复用写完查询、填好变量并执行后刷新页面查询和变量仍然在——所有状态自动保存在 localStorage点击左侧边栏历史图标查看过往执行过的查询列表点任意一条即可载入编辑器复用这是把某次调试现场分享给同事最快的方式同一域名下跑两个 GraphiQL 实例如 staging 与生产环境对照页时给GraphiQL组件传一个storage对象按命名空间隔离避免互相覆盖包 README 的 Usage with a Custom Storage Namespace 一节给出了完整写法。进阶写一个插件挂到侧边栏GraphiQL 从 v2 起提供插件 API内置的文档和历史插件本身就是这么实现的可参考 packages/graphiql-plugin-history/src/index.ts 的完整示例。一个插件只需三个属性title唯一名称显示为侧边栏图标 tooltip、iconReact 组件侧边栏图标、contentReact 组件面板内容再通过pluginsprop 传入组件即可用visiblePluginprop 可控制初始打开哪个插件。content里还能用 graphiql/react 提供的 hooks 读取当前查询文本、Schema 等状态从而做出与编辑器联动的工具。// 在侧边栏挂一个API 速查面板 const ApiCheatsheet { title: API 速查, icon: () spanAPI/span, // 侧边栏图标 content: () ( div style{{ padding: 12, lineHeight: 1.6 }} h3常用查询/h3 pquery GetUser { user { id name } }/p pmutation SetNickname { setNickname { id } }/p /div ), }; // 在应用中启用 // GraphiQL fetcher{fetcher} plugins{[ApiCheatsheet]} /界面颜色全部走 CSS 变量覆盖 packages/graphiql-react/src/style/root.css 中的变量是官方唯一支持的换肤方式v2 起类名不再是稳定 API不建议直接依赖。排错速查现象可能原因处理编辑器无补全、文档面板为空introspection 请求失败打开 Network 检查 introspection 响应先确认端点地址与 CORS控制台报 CORS 错误服务端未返回允许头服务端配置 CORS或让 GraphiQL 与后端同域/走反向代理Subscription 请求一直没有响应fetcher 只返回 Promisefetcher 需返回 Observable 或 AsyncIterable两个实例互相覆盖状态同域共享 localStorage 键传storage对象按命名空间隔离构建后编辑器无语法高亮构建工具未正确加载 Monaco worker参考 examples/graphiql-vite/vite.config.mjs 的 worker 配置GraphiQL 适合验证 GraphQL 服务、调试查询和团队探索 API如果你的目标是生产级请求层或静态 Schema 文档生成选更专用的工具更合适。核心文档与 API 说明packages/graphiql/README.md各种集成方式示例examples/v5 迁移指南docs/migration/graphiql-5.0.0.md源码开发流程DEVELOPMENT.md【免费下载链接】graphiqlGraphiQL the GraphQL LSP Reference Ecosystem for building browser IDE tools.项目地址: https://gitcode.com/GitHub_Trending/gr/graphiql创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表