使用KGraphQL丰富的DSL来设置GraphQL模式。
围绕内置数据执行基本操作(查询和变异)。
什么是GraphQL?
GraphQL是API的查询语言,也是处理查询的服务器端运行时。把GraphQL看作是现有API或数据库的外观。GraphQL还利用类型系统来定义后备数据。GraphQL没有绑定到任何特定的数据库或存储引擎。相反,它是由您现有的代码和数据支持的。
API开发人员使用GraphQL创建架构描述客户机可以通过该服务查询的所有可能的数据。你可以定义一个对象的类型和类型。作为查询来吧,GraphQL根据模式验证查询。然后,GraphQL执行已验证的查询。API开发人员将模式中的每个字段附加到名为分解器。在执行期间,调用解析程序以生成值。您将在本教程的后面创建解析器。
区分GraphQL和REST
GraphQL和REST的主要区别在于REST是基于网络的软件的一个体系结构概念。另一方面,GraphQL是一种查询语言、规范和一组工具,它使用HTTP在单个端点上操作。
但它们也有相似之处。它们都以JSON格式向前端客户机提供信息,并有方法识别某个操作是否要读或写数据。两者最后都会调用服务器上的函数来执行不同类型的请求。
REST往往有多个端点,GraphQL只有一个端点。
什么是Ktor?
Ktor是一个用于轻松构建连接应用程序的框架,包括移动应用程序、web应用程序、浏览器应用程序和桌面应用程序。Ktor应用程序是用Kotlin编写的,使开发人员能够快速构建异步web应用程序。
与Ktor一起发展的一些更显著的原因包括:
轻量级:使用你需要的。Ktor允许您透明地配置项目所需的功能。
可扩展:扩展您需要的。通过一个可配置的管道,您可以创建所需的扩展,并将它们放在任何您想要的地方。
跨平台:在需要的地方运行。使用Kotlin多平台技术从头开始构建,您可以在任何地方部署Ktor应用程序。
异步:根据需要缩放。使用Kotlin协程,Ktor是真正的异步和高度可伸缩的。
开发项目
GraphQL能够与各种数据源交互,包括数据库、REST端点等……但是,为了管理本教程的范围,您将使用存储在内存中的数据。在IDE中打开starter项目之后,第一步是在公开GraphQL模型之前设置对象模型类。
设置模型类
在创建GraphQL模式之前,有必要定义服务将公开的对象模型。然后,创建型号.kt归档模型目录。删除为您创建的任何Models类并替换为:
// 1
enum class Position {
GK, // Goalkeeper
DEF, // Defender
MID, // Midfielder
FRW // Forward
}
// 2
data class Player(var uid: String, var name: String, var team: String, var position: Position)
// 3
data class PlayerInput(val name: String, val team: String, val