• 简介
  • 快速入门
  • 应用程序
  • 应用安全
  • 数据类型
  • RESTful请求
  • 数据对象

    简介

    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请求相关的响应