内容简介:它基本上是API的查询语言,GraphQL显示了服务器提供的不同类型的数据,然后客户端可以准确地选择它想要的内容。同样在GraphQL中,您可以在一次调用中获取多个服务器资源,而不是进行多个REST API调用。GraphQL可以与多种语言一起使用。在这里,我们将重点介绍如何使用NodeJS将JavaScript与JavaScript一起使用。
它基本上是API的查询语言,GraphQL显示了服务器提供的不同类型的数据,然后客户端可以准确地选择它想要的内容。同样在GraphQL中,您可以在一次调用中获取多个服务器资源,而不是进行多个REST API调用。
GraphQL可以与多种语言一起使用。在这里,我们将重点介绍如何使用NodeJS将JavaScript与JavaScript一起使用。
安装
创建一个名为graphql-with-nodejs的文件夹。进入项目文件夹并运行npm init以创建NodeJS项目。对此的命令如下。
cd graphql-with-nodejs npm init
安装依赖项
使用以下命令安装Express:
npm install express
使用以下命令安装GraphQL。我们将安装graphql和graphql for express。
npm install express-graphql graphql
NodeJS代码
在项目中创建一个名为server.js的文件,并将以下代码复制到其中:
<b>const</b> express = require('express'); <b>const</b> port = 5000; <b>const</b> app = express(); app.get('/hello', (req,res) => { res.send(<font>"hello"</font><font>); } ); app.listen(port); console.log(`Server Running at localhost:${port}`); </font>
上面的代码有一个名为/ hello的 http get端点。
端点是使用express创建的。
现在让我们修改此代码以启用GraphQL。
在代码中启用GraphQL
GraphQL将有一个名为/ graphql的 url端点,它将处理所有请求。
将以下代码复制到server.js中
<font><i>//get all the libraries needed</i></font><font> <b>const</b> express = require('express'); <b>const</b> graphqlHTTP = require('express-graphql'); <b>const</b> {GraphQLSchema} = require('graphql'); <b>const</b> {queryType} = require('./query.js'); </font><font><i>//setting up the port number and express app</i></font><font> <b>const</b> port = 5000; <b>const</b> app = express(); </font><font><i>// Define the Schema</i></font><font> <b>const</b> schema = <b>new</b> GraphQLSchema({ query: queryType }); </font><font><i>//Setup the nodejs GraphQL server</i></font><font> app.use('/graphql', graphqlHTTP({ schema: schema, graphiql: <b>true</b>, })); app.listen(port); console.log(`GraphQL Server Running at localhost:${port}`); </font>
graphqlHTTP使我们能够在/ graphql url 上设置GraphQL服务器。它基本上知道如何处理即将发出的请求。此设置在以下代码行中完成:
app.use('/graphql', graphqlHTTP({ schema: schema, graphiql: <b>true</b>, }));
现在让我们探索graphqlHTTP中的参数:
1. graphiql
graphiql是一个Web UI,您可以使用它来测试graphql端点。我们将其设置为true,以便更容易测试我们创建的各种graphql端点。
2.shcema
虽然graphql只有一个外部端点/ graphql,但这又可以让多个其他端点执行各种操作。这些端点将在shcema中指定。
shcema将执行以下操作:
- 指定端点
- 指示端点的输入和输出字段
- 指示在命中端点时应执行的操作,依此类推。
Schema在代码中定义如下
<b>const</b> schema = <b>new</b> GraphQLSchema({ query: queryType });
3.query
在模式中可以看到查询已设置为queryType。我们使用以下命令从query.js文件导入queryType
const {queryType} = require('./query.js');
query.js是一个我们即将创建的自定义文件。
query是我们在模式中指定只读端点的地方。
在项目中创建一个名为query.js的文件,并将以下代码复制到其中。
<b>const</b> { GraphQLObjectType, GraphQLString } = require('graphql'); <font><i>//Define the Query</i></font><font> <b>const</b> queryType = <b>new</b> GraphQLObjectType({ name: 'Query', fields: { hello: { type: GraphQLString, resolve: function () { <b>return</b> </font><font>"Hello World"</font><font>; } } } }); exports.queryType = queryType; </font>
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仓库中 提供了此应用程序的完整代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- php如何实现session,自己实现session,laravel如何实现session
- AOP如何实现及实现原理
- webpack 实现 HMR 及其实现原理
- Docker实现原理之 - OverlayFS实现原理
- 为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?
- 自己实现集合框架(十):顺序栈的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。