gqlengine

Go 语言的 GraphQL 解决方案
授权协议 Apache
开发语言 Google Go
所属分类 Web应用开发、 GraphQL 项目
软件类型 开源软件
地区 国产
投 递 者 施锋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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 支持图形形式观察)

 相关资料
  • 问题内容: 这个问题已经在这里有了答案 : 有没有好的自然语言处理库[关闭] (3个答案) 6年前关闭。 Java世界中是否有类似Python的NTLK的出色软件包? 问题答案: 我知道的两个流行的是: 门 OpenNLP

  • 本文向大家介绍c语言内存泄漏严重的解决方法,包括了c语言内存泄漏严重的解决方法的使用技巧和注意事项,需要的朋友参考一下 摘要:通过介绍内存泄漏问题原理及检视方法,希望后续能够从编码检视环节就杜绝内存泄漏导致的网上问题发生。 1. 前言 最近部门不同产品接连出现内存泄漏导致的网上问题,具体表现为单板在现网运行数月以后,因为内存耗尽而导致单板复位现象。一方面,内存泄漏问题属于低级错误,此类问题遗漏到现

  • 本文向大家介绍vim配置go语言语法高亮问题的解决方法,包括了vim配置go语言语法高亮问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 操作系统 : CentOS7.3.1611_x64 go 版本 : go1.8.3 linux/amd64 vim版本 :version 7.4.160 vim配置go语言语法高亮的问题已经遇到过好几次了,每次都去查找太麻烦,这里总结下。 安装git: y

  • 本文向大家介绍易语言BUG及解决办法,包括了易语言BUG及解决办法的使用技巧和注意事项,需要的朋友参考一下 1.汇编补丁中,到字节集命令不适合含有表达式. 例: 错误用法: 局_补丁字节集 = { } 局_补丁字节集 = 局_补丁字节集 + { 137, 13 } + 到字节集 (局_申请到的地址 + 23) 这样跨进程写入后肯定不是想要的汇编代码mov [局_申请到的地址 + 23],ecx 正

  • 本文向大家介绍易语言无法定位链接器解决方法,包括了易语言无法定位链接器解决方法的使用技巧和注意事项,需要的朋友参考一下 易语言开发环境的诞生,影响了众多编程爱好者的关注的追捧。的确,很多编程爱好者在使用易语言的同时产生了很多的困惑,这些困惑很多,比如易语言无法定位链接器。 1、首先,打开易语言,创建一个“Windows窗口程序”空白工程,操作如下: 2、进入窗口界面以后,我们不编写任何的代码,就只

  • 本文向大家介绍使用C语言来解决循环队列问题的方法,包括了使用C语言来解决循环队列问题的方法的使用技巧和注意事项,需要的朋友参考一下 题目描述:     大家都知道数据结构里面有一个结构叫做循环队列。顾名思义,这是一个队列,并且是循环的。但是现在,淘气的囧哥给这个循环队列加上了一些规矩,其中有5条指令:     (1) Push K, 让元素K进队列。     (2) Pop,对头元素出队列。   

  • 主要内容:安装R包,语法,输入数据,例子决策树是以树的形式表示选择及其结果的图形。图中的节点表示事件或选择,并且图形的边缘表示决策规则或条件。它主要用于使用R的机器学习和数据挖掘应用程序。 使用决策的例子是 - 将接收的邮件预测是否为垃圾邮件,根据这些信息中的因素,预测肿瘤是癌症或预测贷款作为良好或不良的信用风险。 通常,使用观察数据也称为训练数据创建模型。 然后使用一组验证数据来验证和改进模型。 R具有用于创建和可视化决策树的包。 对

  • 我正在开发一个graqphqlapi,它通过Mongoose从MongoDB获取数据。现在我遇到的问题是GraphQL不使用查询来解析字段,而是使用字段解析程序,因为没有设置ID,所以字段解析程序无法工作。 TypeDefs: 解析程序: 功能: 查询: 结果: