gqlengine 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
gqlengine 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
gqlengine 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
gqlengine 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
gqlengine 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
提 交 者 MrCode
适用人群 未知
收录时间 2020-02-07

软件简介

gqlengine 是一个 GraphQL golang 解决方案(服务端框架),基于 graphql-go,但无需繁杂的配置语句,也无需二次编辑 schema 和 resolver(两次编写业务代码),仅通过 go-reflection,自动解析 resolver function,并自动创建关联的 graphql 类型。如以下代码:

package main

import (
  "net/http"

  "github.com/gqlengine/gqlengine"
)


type MyInfo struct {
  gqlengine.IsGraphQLObject `gqlDesc:"my info"`
  SaySomething string
}

func MySimpleQuery() error {
  panic("not implemented")
}

func main() {
  engine := gqlengine.NewEngine(gqlengine.Options{
	Tracing: true, // enable tracing extensions
  })
  
  // register your queries, mutations and subscriptions
  engine.NewQuery(MySimpleQuery)
  
  // do NOT forget init the engine
  if err := engine.Init(); err != nil {
    panic(err)
  }
  
  // serve for HTTP
  http.HandleFunc("/api/graphql", engine.ServeHTTP)
  if err := http.ListenAndServe(":8000", nil); err != nil {
    panic(err)
  }
}

实际仅需要 engine.NewQuery(MySimpleQuery) 即可,gqlengine 会自动查找该 func 的入参和出参,推导出对应的 graphql 类型,比如 MySimpleQuery 返回了 MyInfo 类型,MyInfo 结构里标记该类型是 GraphQL Object,gqlengine 在 Init() 中就自动创建了该 Object。

GQLEngine 目前已经支持各类 GraphQL 类型的 reflection,同时还具备以下强大特性:

  • Websocket Subscription 支持(继承了 Websocket,使用者无需配置)
  • Multipart Upload (支持通过 graphql 上传任意多个图片、文件等)
  • Tracing extensions(支持对 graphql 调用层次/链路跟踪,结合 playground 支持图形形式观察)

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (8)

加载中
不知道graphql跟json有什么优势, 感觉鸡肋。
2020/04/16 22:34
回复
举报
grapqhl 对比的是 restful ~ 以前是,我后端给啥,你就取啥。 现在是,你要啥,你给我说,我后端一次性全部给你。对于前端和后端来说都非常方便,一次性可以取全部数据,不用十几个接口了
2020/04/21 10:17
回复
举报
这么说,后端其实把字段全部取出来了,只是选择性输出。
2020/04/21 13:59
回复
举报
MrCode软件作者
后端需不需要全部取出字段完全在于你怎么处理,笨一点的办法可以全部取出。但gqlengine支持优化字段选取的方法(使用selection可以判断哪些字段需要取回)。
2020/04/24 21:34
回复
举报
那后端怎么根据字段做优化呢?
2020/04/23 21:28
回复
举报
MrCode软件作者
gqlengine具备自动拼接数据的能力,提供resolve接口,有选择的处理需要返回(resolve)的字段;同时还提供了selection方法,支持根据前端选择的字段,留给后端优化数据处理(优化sql)的空间.
2020/04/24 21:32
回复
举报
关注
2020/03/16 13:34
回复
举报
关注一下
2020/03/16 09:59
回复
举报
更多评论
发表于服务端专区
2020/02/07 11:04

gqlengine 开源并发布第一版

gqlengine 是凯斐德科技开源的 一个graphql golang 解决方案(服务端框架),基于 graphql-go,但无需繁杂的配置语句,也不像 gopher-graphql/graphql-go 那样编写 schema 再编写对应 resolver(两次编写业务代码),而是通过 go-reflection,解析给入的 resolver function,自动分析并创建的 graphql 类型。如以下代码: package main import ( "net/http" "github.com/gqlengine/gqlengine" ) type MyInfo...

2
8
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于服务端专区
2020/03/05 16:12

最近大家都在用 Go 语言玩什么?这几个最新的开源项目告诉你

自 2009 年 11 月正式宣布推出以来,Go 语言凭借着其简单、高效、资源占用低的优势逐渐在开发者人群中变得热门起来,优秀的 Go 语言开源项目层出不穷。Gitee 上优秀的开发者们也已经分享了近 400 个得到 Gitee 官方推荐的优质 Go 语言项目,我们为大家挑选出最新的几个,看看最近大家都在用 Go 语言做些什么好玩的东西。 1.xgen xgen 是 Go 语言编写的 XSD (XML Schema Definition) 工具基础库,可将 XML 模式定义文件编译为多语...

0
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
8 评论
72 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部