gqlengine 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
gqlengine 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
gqlengine 获得 2021 年度 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)
发表于软件架构专区
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
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
8 评论
81 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部