使用gqlgen搭建GraphQL服務器

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

6.輸入http://localhost:8080

7.先執行插入數據操作

mutation createTodo {
  createTodo(input:{text:"todo", userId:"1"}) {
    user {
      id
    }
    text
    done
  }
}

8.再執行查詢數據操作

query findTodos {
  	todos {
      text
      done
      user {
        name
      }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章