简介

Bmob平台为您的移动应用提供了一个完整的后端解决方案,我们提供轻量级的SDK开发包,让开发者以最小的配置和最简单的方式使用Bmob平台提供的服务,进而完全消除开发者编写服务器代码以及维护服务器的操作。 Go SDK封装了Bmob RESTful API,但并不包含功能封装,如果需要调用具体的功能,请参考官方RESTful API开发文档http://docs.bmob.cn/data/Restful/b_developdoc/doc/index.html

快速入门

建议您在阅读本开发文档之前,先阅读我们提供的 go快速入门文档,便于您后续的开发。

应用程序

在Bmob平台注册后,每个账户可创建多个应用程序,创建的每个应用程序有各自的Application ID,应用程序将凭其Application ID使用Bmob SDK。

应用安全

请大家在使用Bmob开发应用程序之前,仔细阅读“数据与安全”的文档:http://docs.bmob.cn/other/Other/m_bql/doc/index.html

数据类型

除了JSON标准里定义的数据类型外,还支持Bmob自定义的数据类型:http://docs.bmob.cn/data/Restful/b_developdoc/doc/index.html#对象 这些类型操作相关的基本数据结构在types.go中定义,由于JSON是schema-less的,你可以只填充必要的字段来完成操作

RESTful请求

一次典型的RESTFul请求如下:

  1. header, err := bmob.DoRestReq(appConfig,
  2. bmob.RestRequest{
  3. bmob.BaseReq{
  4. "GET",
  5. bmob.ApiRestURL("GameScore") + "/",
  6. ""},
  7. "application/json",
  8. nil},
  9. &respDst}
  10. if err == nil {
  11. log.Println(header}
  12. log.Println(respDst}
  13. } else {
  14. log.Panic(err}
  15. }

参数:

  • appConfig - 保存了APP相关的key等信息
  • RestRequest - 使用Bmob RESTful API 所需的信息: {方法, url, sessionToken}, 数据类型, body
  • respDst - 用于保存解析后的response 返回值:
  • header - http.Header, 请求返回的标准HTTP头
  • err - 错误信息
  1. curl -X GET \
  2. -H "X-Bmob-Application-Id: Your Application ID" \
  3. -H "X-Bmob-REST-API-Key: Your REST API Key" \
  4. -G \
  5. --data-urlencode 'where={"createdAt":{"$gte":{"__type":"Date","iso":"2011-08-21 18:02:52"}}}' \
  6. https://api.bmob.cn/1/classes/GameScore

再一次请求中,你需要指定的HTTP方法,URL,sessionToken等均可以在BaseReq中指定, APP验证需要的KEY等在RestConfig中指定 数据段则在转成[]byte类型后传入 上传不同类型的格式时,需要指定编码格式,默认为text/plain,

数据对象

Bmob请求格式化数据时,body为JSON格式,用户可以自定义需要的字段,但是由于返回的数据会附加Bmob预定义的字段,所以需要单独处理。 SDK中采取的写法如下:

  1. type TestDataType struct {
  2. Score string
  3. data DataType
  4. }
  5. type TestDataRes struct {
  6. TestData
  7. bmob.RestResponse
  8. }

通过继承自定义的Response结构体,我们可以同时解析返回的数据里的用户定义数据和系统定义数据。

RestResponse包含了解析最常用的请求响应所需的字段,如果需要其他解析其他请求的响应,可以继承SDK中提供的相应的结构体,如ImageResponse

  1. type MyRes struct {
  2. bmob.RestResponse
  3. bmob.ImageResponse
  4. }

这个结构体可以解析标准的RESTful响应和Image请求相关的响应