GraphQL - Schema

GraphQL - Schema 首页 / GraphQL入门教程 / GraphQL - Schema

GraphQL 模式是任何 GraphQL 服务器实现的核心。它描述了连接到它的客户端应用程序可用的功能。我们可以使用任何编程语言来创建 GraphQL 模式并围绕它构建接口。

在本章中,无涯教程使用Apollo服务器执行GraphQL查询。 graphql-tools中的 makeExecutableSchema 函数可帮助您绑定架构和解析器。

makeExecutableSchema 函数采用对象类型的单个参数{}。下面给出了使用此函数的语法-

import { makeExecutableSchema } from 'graphql-tools';

const jsSchema=makeExecutableSchema({
   typeDefs,
   resolvers, //optional
   logger, //optional
   allowUndefinedInResolve=false, //optional
   resolverValidationOptions={}, //optional
   directiveResolvers=null, //optional
   schemaDirectives=null,  //optional
   parseOptions={},  //optional
   inheritResolversFromInterfaces=false  //optional
});	
Sr.No.Parameter & Remark
1

typeDefs

这是必需的参数。它以utf-8字符串的形式表示GraphQL查询。

2

Resolvers

这是一个可选参数(默认为空对象)。它具有处理查询的函数。

3

logger

这是一个可选参数,可用于将错误打印到服务器控制台。

4

parseOptions

这是一个可选参数,当将typeDefs指定为字符串时,允许自定义解析。

链接:https://www.learnfk.comhttps://www.learnfk.com/graphql/graphql-schema.html

来源:LearnFk无涯教程网

5

allowUndefinedInResolve

默认情况下是这样。设置为false时,如果解析函数返回未定义,则会导致它们引发错误。

6

resolverValidationOptions

这是一个可选参数,并且接受具有布尔属性的对象。

7

inheritResolversFromInterfaces

这是一个可选参数,并且接受布尔参数来检查解析器对象的继承。

让无涯教程创建一个简单的应用程序来了解此架构(Schema),这将创建一个用于从服务器查询学生列表。学生数据将存储在文件中,将使用名为 notarealdb 的节点模块来伪造数据库并从文件中读取数据。

无涯教程网

步骤1  -  下载依赖项

创建一个名为 schema-app 的文件夹。从终端将目录更改为schema-app。然后按照"Environment Setup"一章中说明的步骤3至5来完成下载和安装过程。

步骤2  -  创建Schema文件

在项目文件夹 schema-app 中添加 schema.graphql 文件,并添加以下代码-

type Query {
   greeting:String
   students:[Student]
}

type Student {
   id:ID!
   firstName:String
   lastName:String
   password:String
   collegeId:String
}

该查询具有两个字段-Greeting和Students,分别返回String和[Student]学生列表,学生被声明为对象类型,它包含多个字段, ID字段声明为不可为空。

步骤3  -  创建解析器

在项目文件夹中创建文件 resolvers.js 并添加以下代码-

const db=require('./db')
const Query={
   greeting:() => {
      return "hello from  LearnFk !!!"
   },
   students:() => db.students.list()
}

module.exports={Query}

学生解析器函数返回数据访问层中的学生列表。要访问模块外部的解析器函数,必须使用 module.exports 导出查询对象。

步骤4  -  运行应用程序

创建一个server.js文件,并参考“环境设置”一章中的步骤8,下一步是在终端中执行命令npm start。服务器将启动并在9000端口上运行。在这里,无涯教程使用GraphiQL作为客户端来测试应用程序。打开浏览器,然后输入URL http://localhost:9000/graphiql 。

在编辑器中键入以下查询-

{
   greeting
   students {
      id
      firstName
      lastName
   }
}

查询将显示输出,如下所示-

Query Output

注意-无涯教程可以使用RESTful API调用来替换students.json,以检索学生数据,甚至可以检索像MySQLMongoDB这样的真实数据库。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

零基础学Python -〔尹会生〕

图解 Google V8 -〔李兵〕

如何看懂一幅画 -〔罗桂霞〕

物联网开发实战 -〔郭朝斌〕

大数据经典论文解读 -〔徐文浩〕

编程高手必学的内存知识 -〔海纳〕

攻克视频技术 -〔李江〕

徐昊 · TDD项目实战70讲 -〔徐昊〕

手把手带你写一个 MiniTomcat -〔郭屹〕

好记忆不如烂笔头。留下您的足迹吧 :)