eyasliu / blog

博客文章
179 stars 13 forks source link

GraphQL Go 笔记 #25

Open eyasliu opened 5 years ago

eyasliu commented 5 years ago

github.com/graph-gophers/graphql-go 遇到一些坑

框架选型

别人已经对比过了,很详细 https://medium.com/open-graphql/choosing-a-graphql-server-library-in-go-8836f893881b

简单的概括就是:

我要在 go module中单独文件定义schema,~只有 gophers 符合~,自从gqlgen支持了 go module 后,这才是我最想要的,原因是

  1. gophers 动态读取schema文件,当然可以把schema文件编成go文件。最麻烦的在于这是在运行时检查类型的,而且resolver要精确到最底层
  2. gqlgen 使用配置文件定义schema文件位置、编译输出的路径之类,当然schema支持多文件,而且是写好schema后编译为go文件,还会根据schema的type和input自动生成 model,resolve只需要精确到model就可以

安装gqlgen的时候,建议先禁用go module

GO111MODULE=off go get -u github.com/99designs/gqlgen

返回类型是否指针

这应该是 string 类型永远都会有值,默认值是 "",但是指针类型可以为 nil,可判断为空

Mutation 和 Query 不能分组

graphql-go 无关,是graphql 的 schema 本身就不支持 将 mutation 和 query 分成多个地方,如果 mutation 比较多的话,估计会比较难以管理,query 的根查询倒是问题不大,目前还没有发现什么好方案

GeSnowBoy commented 5 years ago

测试