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

目录
相关文章
|
8月前
|
前端开发 数据管理 API
探究GraphQL在前端开发中的实际应用
在如今越来越复杂的前端应用程序中,数据管理变得更加困难,因此GraphQL成为了越来越受欢迎的解决方案。本文将介绍GraphQL在前端开发中的应用,以及它对开发过程所带来的好处。
|
5月前
|
API 开发者
GraphQL全面深度讲解
GraphQL是一种查询语言和运行引擎,允许开发者在一个请求中自定义并获取所有所需数据,提供准确且无冗余的数据返回,但可能需要开发者学习新的语言并投入更多时间来维护数据模型。
136 5
GraphQL全面深度讲解
|
1月前
|
缓存 API C#
C# 一分钟浅谈:GraphQL 与 REST 比较
本文对比了REST和GraphQL两种流行的API设计风格,从概念、优缺点及C#实现角度进行了详细分析,并提供了代码示例。REST以其简单易懂和无状态特性著称,而GraphQL则通过精确获取和单次请求的优势,提高了数据获取效率。文章还讨论了常见问题与解决策略,帮助开发者根据实际需求选择合适的API设计风格。
60 10
|
8月前
|
SQL 前端开发 API
前端需要学GraphQL 吗?
前端需要学GraphQL 吗?
79 2
|
8月前
|
API 开发者 网络架构
从REST到GraphQL:探究GraphQL的概念与实践
RESTful API曾经是互联网应用程序的主流,但它也存在着一些限制。随着GraphQL的出现,开发者们可以更加自由地定义和查询API,提高了应用程序的灵活性和可扩展性。本文将深入探讨GraphQL的概念和实践,并介绍如何在应用程序中使用GraphQL。
49 6
|
8月前
|
前端开发 API UED
深入浅出GraphQL:理解与实践
本文将以清晰易懂的方式介绍GraphQL的概念及其实际应用。通过对比RESTful API和GraphQL的特点,阐述GraphQL在数据查询和交互方面的优势。同时,将探讨GraphQL在现代软件开发中的实际应用,并提供一些最佳实践指南。无论您是初学者还是有经验的开发者,都能从本文中获得有益的启发和指导。
|
API
GraphQL
GraphQL
71 0
|
JavaScript Go
搭建GraphQL服务
搭建GraphQL服务
94 0
|
存储 Java API
大厂都在实践的GraphQL,你了解吗?
大厂都在实践的GraphQL,你了解吗?
195 0
GraphQL 是干什么的?底层原理是什么?
GraphQL 是干什么的?底层原理是什么?
427 0