graphQL入门分享
创始人
2024-01-13 05:21:17

是什么

一种用于 API 的查询语言;它与特定技术无关,你可以用任何语言实现它

简单理解,他能提供一个接口,让我们来调用,只是返回的数据格式更多是由我们前端来控制

为什么

官网:https://graphql.cn/

1.请求你所要的数据 不多不少

2.获取多个资源只用一个请求

3.描述所有的可能类型系统

怎么样

演示一下

 

步骤一:

创建工程目录 demo

初始化项目,以及引入所需的包

npm init -f

npm install graphql express express-graphql --save

npm install babel-cli babel-preset-es2015 --save-dev

npm install -g nodemon

步骤二:

在项目根目录下创建 data 目录,并在该目录下创建 data.json 文件,并输入以下内容:

{    "1": {        "id": "1",        "name": "宁缺",        "age":20    },    "2": {        "id": "2",        "name": "光明之子",        "age":25    },   "3": {        "id": "3",        "name": "冥王之子",        "age":35    }
}

步骤三:

创建 server.js 文件,并输入以下内容:

import express from 'express'const app = express()
const port = 3000app.get('/', (req, res) => {res.send('Hello!');});let server = app.listen(port, function () {let addr = server.address();let bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port;console.log('Listening on ' + bind);});

命令行运行:nodemon --exec babel-node --presets=es2015 server.js,浏览器输入:http://localhost:3000 。显示 Hello!,说明你的 express 服务已经 OK 了。

步骤四:

创建文件夹 /src/schema,并创建文件 index.js。并在 index.js 文件中编写GraphQL Schema。Schema 是 GraphQL 请求的入口,用户请求的GraphQL 将会对应到具体的 Schema。

import {GraphQLObjectType,GraphQLSchema,GraphQLString,GraphQLInt
} from 'graphql'// 我们要用的模拟数据
const data = require('../../data/data.json')const User = new GraphQLObjectType({name: 'User',description: 'User对象',fields: {id: {type: GraphQLInt},name: {type: GraphQLString},}});const Query = new GraphQLObjectType({name: 'Query',fields: {user: {type: User,args: {id: {type: GraphQLInt}},resolve: function (_, args) {return data[args.id];}}}});const Schema = new GraphQLSchema({query: Query
});export default Schema;

步骤五:

修改 server.js 文件,连接 schema。将 server.js 文件修改为以下内容:

import express from 'express'
import Schema from './src/schema'
import graphqlHTTP from 'express-graphql'const app = express()
const port = 3000app.use('/', graphqlHTTP({schema: Schema,graphiql: true}));let server = app.listen(port, function () {var addr = server.address();var bind = typeof addr === 'string' ? 'pipe ' + addr : 'port ' + addr.port;console.log('Listening on ' + bind);});

这时,在浏览器中可以查看到如下界面

 

我们还可以用postman去请求

更多学习视频学习资料请参考:B站搜索“我们一起学前端”

 

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...