Skip to content
This repository has been archived by the owner on Jan 17, 2020. It is now read-only.
/ gql Public archive

简化 graphql-go 开发,该项目被 goql 替代

License

Notifications You must be signed in to change notification settings

seerx/gql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

该项目不再维护

该包的功能在 goql 中被继承,请跳转到 goql

gql

简化 graphql-go 开发,graphql-ql 提供的原始接口开发非常繁琐,稍有不慎就会出错。该项目就是为了简化 golang 开发 graphql 过程,让开发人员把更多的精力投入到业务逻辑的开发中。

简化内容

  1. 省去定义 graphql 对象的过程,只需定义对应的结构体即可
  2. 省去定义 query 和 mutation 的过程,只需定义 go 函数即可
  3. 省去手动获取请求参数的过程,并提供参数验证功能(完善中)
  4. 提供注入功能,简化登录验证等功能

例子

// goods 商品信息
type goods struct {
	ID    string    `json:"id"`
	Name  string    `json:"name"`
	Price float64   `json:"price"`
	URL   string    `json:"url"`
	Time  time.Time `json:"time"`
}

// goodsList 查询函数定义
func goodsList() ([]goods, error) {
	return []goods{
		goods{
			ID: "A1", Name: "A-test1",
		},
		goods{
			ID: "A2", Name: "A-test2",
		},
	}, nil
}

func init() {
	// 注册查询
	gql.Get().RegisterQuery(goodsList)
}

func main() {
	// 在 8080 端口启动服务
	g := gql.Get()
	handler := g.NewHandler(&handler.Config{
		Pretty:   true,
		GraphiQL: true,
	})

	fmt.Print(g.Summary())

	http.Handle("/graphql", handler)
	fmt.Println("The api server will run on port : ", port)
	http.ListenAndServe(fmt.Sprintf(":%d", port), nil) 
}

启动后在浏览器输入 http://localhost:8080/graphql 即可看到接口信息

约定

  1. 定义的对象名称与结构名称完全一致
  2. 输入参数只允许使用自定义结构,且只能有一个输入参数,输入参的参数名称以结构名称定义,graphql 对象类型将以 “input” 打头加上结构名称定义
  3. 输入结构允许嵌套,但是不允许出现匿名结构
  4. 输入参数如果是自定义结构,要使用指针形式
  5. 输入参数不能出现切片、数组、映射等类型(同时提交多条记录,可以使用别名)
  6. 只有返回值是一个自定义结构(指针)和 error 的函数,且输入参数为一个自定义结构(指针)、任意个数注入结构(指针)、*gqlh.InputValidator 的组合才能作为 Query 和 Mutation 对象
  7. 定义的 Query 和 Mutation 名称与函数名称完全一致
  8. 出现 Query 或 Mutation 的函数名称相同时,将舍弃后面的函数
  9. 注入函数必须是固定形式

更详细的使用方法 examples

  1. hello 简单示例
  2. query Query 示例
  3. mutation Mutation 示例
  4. inject 注入示例
  5. checkparams 参数检测示例

About

简化 graphql-go 开发,该项目被 goql 替代

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages