LeanCloud Go SDK 首个版本现已发布

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{}))

评论

Loading comments ...