# EasyGQL
EasyGQL(Easy GraphQL)[github网址:https://easygql.github.io/doc/]是由[Zukdoor][https://zukdoor.cloud]于2020年2月份推出的一款多数据库支持的实时GraphQL 引擎。能够让开发者非常方便的进行GraphQL类型定义,并能够为开发者灵活的提供各种类型的graphql接口.
- 前端开发人员使用EasyGQL控制台,创建、维护和管理GraphQL Schema信息。
- EasyGQL引擎根据定义好的Schema信息,提供可供前端开发人员直接使用的满足GraphQL规范的数据接口。
- 系统用户通过网页直接访问EasyGQL提供的数据接口,完成业务请求。
用户可以通过使用已经在docker hub发布的EasyGQL镜像,快速使用了及了解EasyGQL的使用。
# 快速部署
第一步:获取docker-compose文件
从以下路径获取EasyGQL的docker-compose文件
# in a new directory
wget https://raw.githubusercontent.com/easygql/easygql-engine/master/docker-compose.yml
# 第二步:启动EasyGQL和PostgreSQL
$ docker-compose up -d
检查一下容器正在运行:
$ docker ps
13d6e5cb0a6f easygql_engine "java -Djava.securit…" 2 weeks ago Up 2 seconds 0.0.0.0:9995->9995/tcp easygql_engine
e2c3081210f2 postgres "docker-entrypoint.s…" 2 weeks ago Up 24 hours 0.0.0.0:5432->5432/tcp easygql_postgresql
# 第三步:打开EasyGQL控制台
在浏览器中输入http://http://127.0.0.1:9995/dataexplorer/schemadb,进入graphiql界面,进行API调试
# 第四步:创建聊天室
# 4.1 创建一个Schema
使用API "SchemaCreate"进行Schema的创建,第一个参数name为schema名字,databaseKind默认值为PostgreSQL,description为schema的描述性文字。
mutation {
SchemaCreate(name:"testcase1",databasekind:PostgreSQL,description:"testcase2"){
id_list
affected_rows
}
}
返回值如下:
{
"data": {
"SchemaCreate": {
"id_list": [
"5ead209e857aba000157d91f"
],
"affected_rows": 1
}
}
}
# 4.2 添加对象
使用API "objecttypesInSchema_ObjectInput" 具体API含义见第六章对象类型。在这个API中,from_id表示Schema的ID,to_object为往schema中增加的对象类型列表。该API实现向已经创建好的Schema中新增一组对象类型。 创建一个对象类型,必须字段有:
- name表示对象类型的名字
- description表示对象类型的描述性文字
mutation {
objecttypesInSchema_ObjectInput(from_id:"5ead209e857aba000157d91f",to_object:[
{
name:"message",
description:" message information"
}
]){
inputNestIDList
}
}
返回值如下:
{
"data": {
"objecttypesInSchema_ObjectInput": {
"inputNestIDList": [
"5e76ca2c158b0124a8ff7fe8"
]
}
}
}
调用该API后,返回1个ID,对应message这个对象的ID
# 4.3 为对象添加字段
使用scalarfieldsInContentType_ObjectInput为对象类型添加标量字段的API,其中from_id为对象类型的ID,to_object为新增字段的数组。 新增一个标量字段有以下参数:
- name为标量字段的字段名,必填
- type为标量字段的字段类型,EasyGQL支持的标量类型见第三章标量类型。
- description为标量字段的描述性文字。 为聊天记录添加字段:
mutation {
scalarfieldsInContentType_ObjectInput(from_id:"5e76ca2c158b0124a8ff7fe9",to_object:[
{
name:"content",
type:String,
description:"content"
},
{
name:"from",
type:ID ,
description:" room information"
},
{
name:"timeinfo",
type:String ,
description:"timeinfo"
}
]){
inputNestIDList
}
}
返回值如下:
{
"data": {
"scalarfieldsInContentType_ObjectInput": {
"inputNestIDList": [
"5e76ca2c158b0124a8ff7ff2",
"5e76ca2c158b0124a8ff7ff3",
"5e76ca2c158b0124a8ff7ff4"
]
}
}
}
从返回值可以看到content、from、timeinfo的ID分别为"5e76ca2c158b0124a8ff7ff2"、"5e76ca2c158b0124a8ff7ff3"、"5e76ca2c158b0124a8ff7ff4"。
# 4.4 发布并启动Schema
Schema得发布并启动才能正式对外提供服务,SchemaPublish这个接口默认会将当前最新的Schema信息发布成GraphQL接口并启动Schema。
mutation {
SchemaPublish(schemaid:"5ead209e857aba000157d91f") {
OperationResult
}
}
返回值如下:
{
"data": {
"SchemaPublish": {
"OperationResult": "true"
}
}
}
OperationResult表示发布并启动结果。
# 4.5 编写前端聊天室内程序
具体代码见:github网址
# 4.6 测试
在工程代码下,输入
npm run serve
打开浏览器,输入网址:
http://localhost:8080/
在界面上输入用户名,进入聊天室
可以查看历史聊天记录,并与他人交互
