1.創建項目
創建gqlgen-todos目錄
切換到gqlgen-todos目錄
執行以下命令:
go mod init github.com/[username]/gqlgen-todos
go get github.com/99designs/gqlgen
2.搭建服務器
創建項目骨架,執行以下命令:
go run github.com/99designs/gqlgen init
命令執行完後,項目骨架結構如下:
├── go.mod
├── go.sum
├── gqlgen.yml
├── graph
│ ├── generated
│ │ └── generated.go
│ ├── model
│ │ └── models_gen.go
│ ├── resolver.go
│ ├── schema.graphqls
│ └── schema.resolvers.go
└── server.go
3.修改graph/resolver.go文件
默認==>
type Resolver struct{}
修改爲==>
type Resolver struct{
todos []*model.Todo
}
4.修改graph/schema.resolvers.go
func (r *mutationResolver) CreateTodo(ctx context.Context, input model.NewTodo) (*model.Todo, error) {
todo := &model.Todo{
Text: input.Text,
ID: fmt.Sprintf("T%d", rand.Int()),
User: &model.User{ID: input.UserID, Name: "user " + input.UserID},
}
r.todos = append(r.todos, todo)
return todo, nil
}
func (r *queryResolver) Todos(ctx context.Context) ([]*model.Todo, error) {
return r.todos, nil
}
5.運行服務器
go run server.go
7.先執行插入數據操作
mutation createTodo {
createTodo(input:{text:"todo", userId:"1"}) {
user {
id
}
text
done
}
}
8.再執行查詢數據操作
query findTodos {
todos {
text
done
user {
name
}
}
}