gqlengineGo 語(yǔ)言的 GraphQL 解決方案
gqlengine 是一個(gè) GraphQL golang 解決方案(服務(wù)端框架),基于 graphql-go,但無(wú)需繁雜的配置語(yǔ)句,也無(wú)需二次編輯 schema 和 resolver(兩次編寫(xiě)業(yè)務(wù)代碼),僅通過(guò) go-reflection,自動(dòng)解析 resolver function,并自動(dòng)創(chuàng)建關(guān)聯(lián)的 graphql 類(lèi)型。如以下代碼:
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)
}
}
實(shí)際僅需要 engine.NewQuery(MySimpleQuery) 即可,gqlengine 會(huì)自動(dòng)查找該 func 的入?yún)⒑统鰠ⅲ茖?dǎo)出對(duì)應(yīng)的 graphql 類(lèi)型,比如 MySimpleQuery 返回了 MyInfo 類(lèi)型,MyInfo 結(jié)構(gòu)里標(biāo)記該類(lèi)型是 GraphQL Object,gqlengine 在 Init() 中就自動(dòng)創(chuàng)建了該 Object。
GQLEngine 目前已經(jīng)支持各類(lèi) GraphQL 類(lèi)型的 reflection,同時(shí)還具備以下強(qiáng)大特性:
- Websocket Subscription 支持(繼承了 Websocket,使用者無(wú)需配置)
- Multipart Upload (支持通過(guò) graphql 上傳任意多個(gè)圖片、文件等)
- Tracing extensions(支持對(duì) graphql 調(diào)用層次/鏈路跟蹤,結(jié)合 playground 支持圖形形式觀察)
評(píng)論
圖片
表情
