Go GraphQL Starter 项目教程
1. 项目的目录结构及介绍
go-graphql-starter/
│
├── context/ # 应用上下文,如数据库配置
├── data/ # 存储不同版本的SQL数据补丁
│ └── 1.0/ # 存储版本1.0的SQL数据补丁
│ └── ... # SQL文件
├── handler/ # HTTP请求链处理,如认证、日志等
├── loader/ # 数据加载器的实现,用于缓存和批处理GraphQL查询
├── model/ # 存放结构体文件
├── resolver/ # GraphQL解析器的实现
├── schema/ # GraphQL模式定义
│ ├── bindata.go # 从静态GraphQL文件生成的Go代码
│ ├── schema.graphql# GraphQL根模式
│ └── type/ # GraphQL类型定义
├── service/ # 用户授权等服务
├── util/ # 工具类
├── graphiql.html # 用于测试查询和突变的GraphiQL HTML文件
├── go.mod # Go模块文件
├── go.sum # Go模块校验文件
├── main.go # 主启动文件
└── config.toml # 配置文件
2. 项目的启动文件介绍
main.go
是项目的启动文件,负责初始化应用并启动服务器。以下是 main.go
的基本结构:
package main
import (
"log"
"net/http"
"github.com/OscarYuen/go-graphql-starter/handler"
)
func main() {
// 初始化路由和处理程序
http.Handle("/", handler.GraphiQL{})
http.Handle("/query", handler.GraphQL{})
// 启动HTTP服务器
log.Println("Server is running on http://localhost:3000")
log.Fatal(http.ListenAndServe(":3000", nil))
}
3. 项目的配置文件介绍
config.toml
是项目的配置文件,用于配置数据库连接和其他应用设置。以下是一个示例配置文件:
[database]
host = "localhost"
port = 5432
user = "postgres"
password = "password"
dbname = "graphql_starter"
[server]
port = 3000
这个配置文件包含了数据库连接信息和服务器端口设置。在 main.go
中,可以通过读取这个配置文件来初始化数据库连接和服务器设置。
package main
import (
"log"
"net/http"
"github.com/BurntSushi/toml"
"github.com/OscarYuen/go-graphql-starter/handler"
)
type Config struct {
Database struct {
Host string
Port int
User string
Password string
Dbname string
}
Server struct {
Port int
}
}
func main() {
var config Config
if _, err := toml.DecodeFile("config.toml", &config); err != nil {
log.Fatal(err)
}
// 初始化数据库连接
// ...
// 初始化路由和处理程序
http.Handle("/", handler.GraphiQL{})
http.Handle("/query", handler.GraphQL{})
// 启动HTTP服务器
log.Println("Server is running on http://localhost:3000")
log.Fatal(http.ListenAndServe(":3000", nil))
}
通过以上步骤,您可以成功启动并配置 go-graphql-starter
项目。