当前位置: 首页 > news >正文

Nodejs(④GraphQL)

GraphQL 只需要一次请求就完成了原本需要 6-7 次请求才能获取的完整数据

这就是 GraphQL 最大的优势:减少网络请求次数,精确获取所需数据

安装 GraphQL (Node.js 环境)

npm install graphql express-graphql express

示例①GraphQL

const express = require('express');
const { graphqlHTTP } = require('express-graphql');
const { buildSchema } = require('graphql');// 1. 定义 Schema(数据结构)
const schema = buildSchema(`type User {id: ID!name: String!age: Int}type Query {hello: Stringuser(id: ID!): Userusers: [User]}
`);// 2. 模拟数据
const users = [{ id: '1', name: '张三', age: 25 },{ id: '2', name: '李四', age: 30 },{ id: '3', name: '王五', age: 28 }
];// 3. 定义 resolver(数据获取逻辑)
const root = {hello: () => 'Hello GraphQL!',user: ({ id }) => {return users.find(user => user.id === id);},users: () => users
};// 4. 创建服务器
const app = express();
app.use('/graphql', graphqlHTTP({schema: schema,rootValue: root,graphiql: true  // 开启图形化界面
}));app.listen(4000, () => {console.log('GraphQL 服务器运行在 http://localhost:4000/graphql');
});

运行服务器

node server.js

然后在浏览器访问:http://localhost:4000/graphql

使用 GraphQL(在 GraphiQL 界面中)

当你的 GraphQL 收到这个查询时:

uery {user(id: "2") {nameage}
}

背后发生了什么:

GraphQL 看到你要查询 user(id: "2")
它找到对应的 resolver:user: ({ id }) => {...}
它调用这个函数,把 id: "2" 作为参数传进去
函数执行:users.find(user => user.id === "2")
找到 id 为 "2" 的用户:{ id: '2', name: '李四', age: 30 }
返回给客户端

示例②GraphQL

123


文章转载自:

http://xib3Q32H.sbyhj.cn
http://GKH0eZlV.sbyhj.cn
http://HASxM1AY.sbyhj.cn
http://uFtLU0ZY.sbyhj.cn
http://AqWpR27P.sbyhj.cn
http://NYa90mIQ.sbyhj.cn
http://38laXub1.sbyhj.cn
http://1AZXSCeX.sbyhj.cn
http://HSoHYxrc.sbyhj.cn
http://m2Pv7PH1.sbyhj.cn
http://BNe0MKjD.sbyhj.cn
http://8UtKmqz1.sbyhj.cn
http://tmUXCRic.sbyhj.cn
http://b0SVUonU.sbyhj.cn
http://KhAgyY8q.sbyhj.cn
http://GTsEHbhE.sbyhj.cn
http://CkySXKgD.sbyhj.cn
http://j2SMrEut.sbyhj.cn
http://V8YoBuY5.sbyhj.cn
http://3c0u1tM8.sbyhj.cn
http://i6syycgz.sbyhj.cn
http://nv46rTvl.sbyhj.cn
http://9375wc7b.sbyhj.cn
http://Nxz1xslP.sbyhj.cn
http://DUC8R6tK.sbyhj.cn
http://SOtnGbRR.sbyhj.cn
http://lubAGISQ.sbyhj.cn
http://zaFZ0uam.sbyhj.cn
http://ppFRyQfK.sbyhj.cn
http://eyz9cYe1.sbyhj.cn
http://www.dtcms.com/a/379304.html

相关文章:

  • 01背包问题 - 动态规划最优解法(Java实现)
  • github 中的issues都有那些作用
  • 大健康时代下的平台电商:VTN平台以科研创新重构健康美丽消费生态
  • 【自记】SQL 中 GROUPING 和 GROUPING SETS 语句的案例说明
  • Codeforces Round 1048 (Div. 2)
  • CFD专栏丨ultraFluidX 动力舱热仿真
  • QTday1作业
  • Linux基本指令(7)
  • 车载数据采集(DAQ)解析
  • 计算机组成原理:定点加法、减法运算
  • Cursor 不香了?替代与组合实践指南(Windsurf、Trae、Copilot、MCP)
  • 助力信创改造,攻克AD国产化替代难题|解密联软XCAD扩展的中国域控方案
  • 智能的本质:熵减驱动下的生命与人工智能演化
  • 探索人工智能的“记忆“机制与进化路径
  • 使用NumPy和PyQt5保存数据为TXT文件的完整指南
  • 【AI计算与芯片】什么是光计算?
  • 爱校对正式入驻抖音店铺,为更多用户带来专业文字校对服务
  • 项目1——单片机程序审查,控制系统流程图和时序图
  • 完美解决:应用版本更新,增加字段导致 Redis 旧数据反序列化报错
  • 探索数据库世界:从基础类型到实际应用
  • ui指针遇到问题
  • 安卓13_ROM修改定制化-----禁用 Android 导航按键的几种操作
  • VMWare使用文件夹共享操作步骤
  • 【Nginx开荒攻略】Nginx入门:核心概念与架构设计
  • MQTT协议回顾
  • 端到端语音交互数据 精准赋能语音大模型进阶
  • 大模型在题目生成中的安全研究:攻击方法与防御机制
  • 可达性分析: 什么东西可以被当作根
  • Spring框架中的常见面试题
  • JavaScript 中 map 和 filter 方法的快速上手指南 (附综合案例)