gqlgenGo 语言实现的基于 graphql 的服务器库
gqlgen 是一个使用 Go 语言实现的用于快速创建严格类型的 graphql 服务器的库。
dep ensure -add github.com/vektah/gqlgen
示例代码
定义 schema
schema {
query: Query
mutation: Mutation
}
type Query {
todos: [Todo!]!
}
type Mutation {
createTodo(text: String!): Todo!
}
type Todo {
id: ID!
text: String!
done: Boolean!
user: User!
}
type User {
id: ID!
name: String!
}
定义模型
package yourapp
type Todo struct {
ID string
Text string
Done bool
UserID int
}
type User struct {
ID string
Name string
}
告诉生成器如何在 types.json 中的两者之间进行映射
{
"Todo": "github.com/you/yourapp.Todo",
"User": "github.com/you/yourapp.User"}
然后从其中生成运行时
gqlgen -out generated.go
在生成的文件的顶部将是与完成所需的图的解析器的接口
package yourapptype Resolvers interface {
Mutation_createTodo(ctx context.Context, text string) (Todo, error)
Query_todos(ctx context.Context) ([]Todo, error)
Todo_user(ctx context.Context, it *Todo) (User, error)
}
实现此接口,然后通过将其传递到生成的代码中来创建服务器
func main() {
http.Handle("/query", graphql.Handler(gen.NewResolver(yourResolvers{})))
log.Fatal(http.ListenAndServe(":8080", nil))
}评论
