1. 我的环境是mac机器,首先要安装node
mkdir graphql_with_nodejs
3. 进入到文件夹中:cd graphql_with_nodejs
4. 初始化创建nodejs项目: npm init ,此时会生成一个package.json文件
5. 安装环境
- npm install express
-
npm install express-graphql graphql
6. 到此我们的环境就安装好了, 接下来需要写代码了
首先是我们的server.js代码, 创建一个文件server.js, 复制以下代码进去
const express = require('express'); const graphqlHTTP = require('express-graphql'); const {GraphQLSchema} = require('graphql'); const {queryType} = require('./schema.js'); //setting up the port number and express app const port = 8000; const app = express(); // Define the Schema const schema = new GraphQLSchema({ query: queryType }); //Setup the nodejs GraphQL server app.use('/graphql', graphqlHTTP({ schema: schema, graphiql: true, })); app.listen(port); console.log(`GraphQL Server Running at localhost:${port}`);
// 定义类型
const { GraphQLObjectType, GraphQLString, GraphQLInt, GraphQLBoolean } = require('graphql'); //Define the Query const queryType = new GraphQLObjectType({ name: 'Query', fields: { hello: {
// 查询结果类型 type: GraphQLString, args: { name: { type: GraphQLString, defaultValue: 'Brian' } },
// 这里使用传参的方式返回值,上面定义了参数的默认值,如果不写就使用默认值; resolve: function(parentValue, args, request) { return 'Hello World ' + args.name + '!'; } }, person: { name: 'personQuery', description: 'query a person', type: new GraphQLObjectType({ // 这里定义查询结果包含name,age,sex三个字段,并且都是不同的类型。 name: 'person', fields: { name: { type: GraphQLString }, age: { type: GraphQLInt }, sex: { type: GraphQLBoolean } } }), args: { name: { type: GraphQLString, defaultValue: 'Charming' } }, resolve(parentValue, args, request) { return { name: args.name, age: args.name.length, sex: Math.random() > 0.5 }; } } } }); exports.queryType = queryType;
7. 此时,我们就可以运行代码, node server.js
在浏览器中输入 http://localhost:8000/graphql
如果环境和代码都正确,就会出现如下所示:
{ hello, person(name:"charming"){ name, sex, age } }
点击三角符号运行,就会出现如下所示: 我们hello使用的是默认指,2️⃣person使用的是传参的方式;
到此,我们的第一个Demo就完成了, 刚开始学习,还有很多不懂,在成长的道路上继续前进,加油!
参考文档: https://blog.csdn.net/qq_41882147/article/details/82966783
<style></style> <style></style>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。