它基本上是API的查询语言,GraphQL显示了服务器提供的不同类型的数据,然后客户端可以准确地选择它想要的内容。同样在GraphQL中,您可以在一次调用中获取多个服务器资源,而不是进行多个REST API调用。
GraphQL可以与多种语言一起使用。在这里,我们将重点介绍如何使用NodeJS将JavaScript与JavaScript一起使用。
安装
创建一个名为graphql-with-nodejs的文件夹。进入项目文件夹并运行npm init以创建NodeJS项目。对此的命令如下。
cd graphql-with-nodejs |
安装依赖项
使用以下命令安装Express:
npm install express |
使用以下命令安装GraphQL。我们将安装graphql和graphql for express。
npm install express-graphql graphql |
NodeJS代码
在项目中创建一个名为server.js的文件,并将以下代码复制到其中:
const express = require('express'); |
上面的代码有一个名为/ hello的 http get端点。
端点是使用express创建的。
现在让我们修改此代码以启用GraphQL。
在代码中启用GraphQL
GraphQL将有一个名为/ graphql的 url端点,它将处理所有请求。
将以下代码复制到server.js中
//get all the libraries needed |
graphqlHTTP使我们能够在/ graphql url 上设置GraphQL服务器。它基本上知道如何处理即将发出的请求。此设置在以下代码行中完成:
app.use('/graphql', graphqlHTTP({ |
现在让我们探索graphqlHTTP中的参数:
1. graphiql
graphiql是一个Web UI,您可以使用它来测试graphql端点。我们将其设置为true,以便更容易测试我们创建的各种graphql端点。
2.shcema
虽然graphql只有一个外部端点/ graphql,但这又可以让多个其他端点执行各种操作。这些端点将在shcema中指定。
shcema将执行以下操作:
- 指定端点
- 指示端点的输入和输出字段
- 指示在命中端点时应执行的操作,依此类推。
Schema在代码中定义如下
const schema = new GraphQLSchema({ query: queryType }); |
3.query
在模式中可以看到查询已设置为queryType。我们使用以下命令从query.js文件导入queryType
const {queryType} = require('./query.js');
query.js是一个我们即将创建的自定义文件。
query是我们在模式中指定只读端点的地方。
在项目中创建一个名为query.js的文件,并将以下代码复制到其中。
const { GraphQLObjectType, |
queryType创建为GraphQLObjectType并命名为Query。
fields是我们指定各种端点的地方。
所以我们在这里添加一个名为hello的端点
hello world的GraphQLString意味着此端点具有字符串返回类型。因为这是graphql架构,所以类型是GraphQLString而不是String。所以直接使用String是行不通的。
resolve function表示调用端点时要执行的操作。这里的操作是返回一个字符串“Hello World”。
最后我们使用导出querytype exports.queryType = queryType。这是为了确保我们可以在server.js中导入它
运行:
node server.js
该应用程序在localhost:5000 / graphql上运行。
您可以转到localhost:5000 / graphql来测试应用程序。
您已经创建了第一个GraphQL端点。
github仓库中提供了此应用程序的完整代码