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

目录
相关文章
|
4月前
|
前端开发 数据管理 API
探究GraphQL在前端开发中的实际应用
在如今越来越复杂的前端应用程序中,数据管理变得更加困难,因此GraphQL成为了越来越受欢迎的解决方案。本文将介绍GraphQL在前端开发中的应用,以及它对开发过程所带来的好处。
|
4月前
|
API 开发者 网络架构
从REST到GraphQL:探究GraphQL的概念与实践
RESTful API曾经是互联网应用程序的主流,但它也存在着一些限制。随着GraphQL的出现,开发者们可以更加自由地定义和查询API,提高了应用程序的灵活性和可扩展性。本文将深入探讨GraphQL的概念和实践,并介绍如何在应用程序中使用GraphQL。
22 6
|
4月前
|
前端开发 API UED
深入浅出GraphQL:理解与实践
本文将以清晰易懂的方式介绍GraphQL的概念及其实际应用。通过对比RESTful API和GraphQL的特点,阐述GraphQL在数据查询和交互方面的优势。同时,将探讨GraphQL在现代软件开发中的实际应用,并提供一些最佳实践指南。无论您是初学者还是有经验的开发者,都能从本文中获得有益的启发和指导。
|
5月前
|
API
GraphQL
GraphQL
36 0
|
8月前
|
JavaScript Go
搭建GraphQL服务
搭建GraphQL服务
45 0
|
9月前
|
存储 Java API
大厂都在实践的GraphQL,你了解吗?
大厂都在实践的GraphQL,你了解吗?
131 0
GraphQL 是干什么的?底层原理是什么?
GraphQL 是干什么的?底层原理是什么?
336 0
|
SQL 前端开发 JavaScript
关于graphql快速入门
关于graphql快速入门
154 0
|
JSON 前端开发 NoSQL
GraphQL 从入门到实践
本文首先介绍了 GraphQL,再通过 MongoDB + graphql + graph-pack 的组合实战应用 GraphQL,详细阐述如何使用 GraphQL 来进行增删改查和数据订阅推送,并附有使用示例,边用边学印象深刻~ 如果希望将 GraphQL 应用到前后端分离的生产环境,请期待后续文章。 本文实例代码:Github 感兴趣的同学可以加文末的微信群,一起讨论吧~
GraphQL 从入门到实践
|
JSON Unix API
graphql学习(五)
今天给之前的demo增加登录验证. 现在验证流行使用JWT(JSON web tokens),我们也选择用github.com/dgrijalva/jwt-go. 还是从models开始,增加user.
1134 0
graphql学习(五)