Go 是 Google 发布的一个高性能的静态类型语言,语法简洁对并发编程有着原生的支持。在我们的用户中也有很多开发者同时在使用 Go 来构建他们的后端应用,因此我们为 Go 开发了 LeanCloud SDK,并支持了在云引擎上构建和部署 Go 应用,相信能为使用 Go 的 LeanCloud 开发者提供便利。
Go SDK 可以作为服务器端部署在云引擎或自己的服务器,也可以作为客户端被分发给用户使用。目前的 LeanCloud Go SDK 0.1 版本支持了数据存储的绝大部分功能,包括用户的管理、对象的存储查询以及文件存储,并且支持将云函数和 Hook 部署到云引擎。
Go SDK 可以与自定义的类型进行交互(需要嵌入 leancloud.Object
),我们也建议开发者定义自己的数据类型:
type Todo struct {
leancloud.Object
Title string `json:"title"`
Content string `json:"content"`
Tags []string `json:"tags"`
Attachment leancloud.File `json:"attachment"`
}
保存一个对象到云端:
// 从环境变量读取信息并创建 Client(在云引擎或 lean up 本地调试时会注入这些环境变量)
client := leancloud.NewEnvClient()
// 创建一个新的 Todo 对象
todo := Todo{
Title: "Team Meeting",
Content: "Discussion of development",
Tags: []string{"Work"},
}
// 保存到云端
ref, err := client.Class("Todo").Create(&todo)
// 检查错误并打印 objectID
if err != nil {
panic(err)
}
fmt.Println(ref.ID)
登录用户并以用户的权限(sessionToken)进行查询:
user, err := client.Users.LogIn("leancloud", "password")
if err != nil {
panic(err)
}
results := make([]Todo, 0)
query := client.Class("Todo").NewQuery().In("tags", []string{"Work"})
// 查询云端数据并写入自定义类型中
if err := query.Find(&results, leancloud.UseUser(user)); err != nil {
panic(err)
}
for _, todo := range results {
fmt.Println(todo.Title, todo.Content)
}
从本地上传文件:
file, err := client.Files.UploadFromFile("./local-file")
if err != nil {
panic(err)
}
fmt.Println(file.URL)
关于 Go SDK 的具体接入方法请参考 Go SDK 安装指南,更多的 API 可以查看 API 文档,我们目前还在编写针对 Go 的数据存储指南和云引擎使用指南,一段时间之后就会上线。
Go SDK 的代码可以在 GitHub 找到,如果在使用中遇到问题,可以在 用户社区 中与我们进行沟通,商用版用户可以提交 工单 来获得支持。
你可以从我们的示例项目 golang-getting-started 开始编写你的第一个 Go 云引擎程序。
定义云函数:
leancloud.Define("hello", func(req *leancloud.FunctionRequest) (interface{}, error) {
params, ok := req.Params.(map[string]string)
if !ok {
return nil, errors.New("invalid params")
}
return map[string]string{
"hello": params["name"],
}, nil
})
Hook:
leancloud.BeforeSave("Review", func(req *leancloud.ClassHookRequest) (interface{}, error) {
if len(req.Object.String("comment")) > 140 {
return req.Object, errors.New("comment too long")
}
return req.Object, nil
})
在编写完云函数和 Hook 之后,你可以使用 命令行工具 将项目部署到云引擎:
$ lean login
$ lean switch
$ lean deploy
除了作为云函数的服务端,Go SDK 也可以作为客户端调用云函数:
result, err := leancloud.Run("hello", &map[string]string{
"name": "leancloud",
}, leancloud.WithRemote())
if err != nil {
panic(err)
}
fmt.Println(result.(map[string]interface{}))