graphql学习(一)

简介:

Golang的 GraphQL 库主要有两个:

Graphql-go/graphql: Code-First 模式的库,无需编写 GraphQL SDL,通过 Go 自带的结构体来描述 GraphQL 中的数据类型,由库本身来转换为 GraphQL Schema。
graph-gophers/graphql-go: Schema-First 模式的库,需要先写好 SDL,然后在 Go 中写相应的字段的解析函数。
以上的话什么意思,我也不是很明白,反正选择星星更多的没错,所以选择第一个.

package main

import (

"fmt"

"github.com/graphql-go/graphql"

)

func main() {

    fmt.Println(&graphql.Schema{})

}

编译后控制台应该输出:

API server listening at: 127.0.0.1:11559
&{map[] [] <nil> <nil> <nil> map[] map[] []}
Process exiting with code: 0

首先确定了import是正确无误了.

初学都得来一段"hello, world". 官网上的hello world是控制台输出的,我们要的是可以从浏览器输出.
很多地方都是配合gin框架做,其实官网上有提供handler库,配合标准库net/http就可以了.

package main

import (
    "net/http"

    "github.com/graphql-go/graphql"
    "github.com/graphql-go/handler"
)

// 处理查询请求
var queryHello = graphql.Field{
    Name:        "QueryHello",
    Description: "Query Hello",
    Type:        graphql.String,
    // Resolve是一个处理请求的函数,具体处理逻辑可在此进行
    Resolve: func(params graphql.ResolveParams) (interface{}, error) {
        return "hello,world", nil
    },
}

// 定义根查询节点
var rootQuery = graphql.NewObject(graphql.ObjectConfig{
    Name:        "RootQuery",
    Description: "Root Query",
    Fields: graphql.Fields{
        "hello": &queryHello, // 这里的hello,你可以试着改变一下,比如改成test,看看GraphiQL哪里会有变化
    },
})

// 定义Schema用于http handler处理
var schema, _ = graphql.NewSchema(graphql.SchemaConfig{
    Query:    rootQuery, // 查询用
    Mutation: nil,       // 需要通过GraphQL做增删改,可以定义Mutation
})

// main
func main() {
    h := Register()
    http.Handle("/graphql", h)
    http.ListenAndServe(":8080", nil)
}

// 初始化handler
func Register() *handler.Handler {
    h := handler.New(&handler.Config{
        Schema:   &schema,
        Pretty:   true,
        GraphiQL: true,
    })
    return h
}

打开浏览器,地址栏输入http://127.0.0.1:8080/graphql,就可以看到GraphiQL界面:
image

输入{hello},就可以在右侧看到hello world了
image

目录
相关文章
|
负载均衡 中间件 Go
Golang 微服务工具包 Go kit
Golang 微服务工具包 Go kit
324 0
|
10月前
|
SQL 消息中间件 Kafka
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是 Apache Flink 提供的 SQL 引擎,支持流批一体处理,统一操作流数据与批数据,具备高性能、低延迟、丰富数据源支持及标准 SQL 兼容性,适用于实时与离线数据分析。
1270 1
|
传感器 数据采集 运维
ERP系统中的生产线监控与异常处理解析
【7月更文挑战第25天】 ERP系统中的生产线监控与异常处理解析
772 8
|
机器人 测试技术 Shell
机器人多设备局域网可通调试
本文提供了一个Bash脚本,用于在指定的局域网段内查找可Ping通的所有设备,如机器人臂或激光雷达等,以便于在多设备局域网环境中进行通信调试。
214 1
|
Prometheus Kubernetes 监控
在K8S中,Pod请求另一个pod偶尔出现超时或延迟,如何排查?
在K8S中,Pod请求另一个pod偶尔出现超时或延迟,如何排查?
|
SQL 存储 关系型数据库
SQL语句-表操作
SQL语句-表操作
|
存储 JavaScript 前端开发
JavaScript数据结构【进阶】
JavaScript数据结构【进阶】
213 0
|
存储 算法 C语言
【C++】STL——容器适配器priority_queue(优先级队列)详解 及 仿函数的介绍和使用
【C++】STL——容器适配器priority_queue(优先级队列)详解 及 仿函数的介绍和使用
539 1
|
编译器 Linux 网络安全
使用buildroot构建龙芯2K1000文件系统,并使用qt+OpenCV进行拍照,并使用dropbear搭建ssh服务
使用buildroot构建龙芯2K1000文件系统,并使用qt+OpenCV进行拍照,并使用dropbear搭建ssh服务
1326 0
使用buildroot构建龙芯2K1000文件系统,并使用qt+OpenCV进行拍照,并使用dropbear搭建ssh服务

热门文章

最新文章