Wilddog Rest API 在 unity3d 中的使用

图片描述

1.安装与配置

1.1 创建一个账号

首先,注册并登录 Wilddog 账号,进入控制面板。然后,在控制面板中,添加一个新的应用。

你会得到一个应用的 URL https://[appid].wilddogio.com。你可以把这个URL理解为云端数据库的地址。

1.2 使用Rest API

在任何支持 HTTPS 的平台和语言中,都可以使用 Wilddog Rest API。在本向导中,我们使用 unity3d 中的 WWW 发送 HTTPS 请求。

2.保存数据

保存数据的方式

图片描述

使用PUT来写入数据

REST API基本的写入数据的操作是 PUT。为了演示数据存储,我们将建立一个博客应用,应用的所有数据都存储在Wilddog应用对应的URl https://[appid].wilddogio.com/rest/saving-data/wildblog 中。

下面来存储一些用户的数据到数据库中,我们存储每个用户的唯一用户名,还存储全名和出生日期。由于用户名是独一无二的,所以适合使用 PUT 而不是 POST 方法,因为我们已经有作为key值的字段,不需要生成。

使用PUT方法,我们可以写入string, number, boolean,array或者任意的JSON对象到我们的数据库,这里我们将传递一个JSON对象:

string url = "https://.wilddogio.com/user.json";
string postString = "{\"alanisawesome\": {" + 
   "\"name\": \"Alan Turing\"," +
   "\"birthday\": \"June 23, 1912\"" +
"}}";
byte[] body = Encoding.UTF8.GetBytes(postString); 
Dictionary headers = new Dictionary();
headers.Add( "X-HTTP-Method-Override", "PUT" );
WWW www = new WWW(url, body, headers);
yield return www;
if (www.isDone && www.error == null) {
   Debug.Log("data" + www.text);
}

当一个JSON对象被存储到数据库中,对象的属性被自动映射到指定位置。如果我们定位到新添加的节点上,我们会看到值“Alan Turing”,我们也可以直接保存数据到子路径节点上:

string url = "https://.wilddogio.com/users/alanisawesome/name.json";
string postString = "Alan Turing";
byte[] body = Encoding.UTF8.GetBytes(postString); 
Dictionary headers = new Dictionary();
headers.Add( "X-HTTP-Method-Override", "PUT" );
WWW www = new WWW(url, body, headers);
yield return www;
if (www.isDone && www.error == null) {
   Debug.Log("data" + www.text);
}

成功的请求将返回HTTP 200 OK状态码,并且响应中会包含存储到数据库中的数据。上面的两个例子中,对于关注数据变化的其它客户端,第一个例子的做法仅仅触发一个事件,而第二个例子将触发两个事件。注意,如果要写入的路径节点下已经存在数据,第一种方法会覆盖已有的数据,而第二种方法只是修改两个子节点的值,而不会影响已有的其他子节点的数据。PUT方法等同于JavaScript SDK的set()方法。

使用PATCH来更新数据

使用PATCH请求,我们可以更新指定子节点的数据,而不覆盖其它已经存在的数据。例如使用PATCH请求为Turing添加nickname:

string url = "https://.wilddogio.com/user/alanisawesome.json";
string postString = "{\"nickname\": \"ACE\"}";
byte[] body = Encoding.UTF8.GetBytes(postString); 
Dictionary headers = new Dictionary();
headers.Add( "X-HTTP-Method-Override", "PATCH" );
WWW www = new WWW(url, body, headers);
yield return www;
if (www.isDone && www.error == null) {
   Debug.Log("data" + www.text);
}

上面的请求将 nickname 添加到 alanisawesome 对象而不删除子节点 name 和 birthday 。如果使用的是 PUT 请求,name 和 birthday 将会被删除,因为他们没有出现在请求中。执行完 PATCH 请求之后,数据库中的数据如下:

{
  "users": {
       "alanisawesome": {
           "birthday": "June 23, 1912",
           "name": "Alan Turing",
           "nickname": "ACE"
       }
   }
}

保存列表数据

如果要给添加到数据库中的元素生成一个独一无二的、基于时间戳的key,我们可以使用POST请求。对于我们的users路径,我们自行定义user数据的key是很有必要的,因为每个用户都有有唯一用户名。但是当用户发表博客时,我们可以使用POST请求为博客数据自动生成key。

string url = "https://.wilddogio.com/user/posts.json";
string postString = "{\"alanisawesome\": {" + 
    "\"name\": \"Alan Turing\"," +
    "\"birthday\": \"June 23, 1912\"" +
"}}";
byte[] body = Encoding.UTF8.GetBytes(postString); 
Dictionary headers = new Dictionary();
WWW www = new WWW(url, body, headers);
yield return www;
if (www.isDone && www.error == null) {
    Debug.Log("data" + www.text);
}

我们的 posts 路径下的数据将会是这样:

{
    "posts": {
         "-JSOpn9ZC54A4P4RoqVa": {
              "author": "alanisawesome",
              "title": "The Turing Machine"
         }
    }
}

注意,key-JSOpn9ZC54A4P4RoqVa 是自动生成的,因为我们使用的是 POST 请求。成功的请求将返回HTTP 200 OK状态码,并且响应中会包含新数据的key。

{"name":"-JSOpn9ZC54A4P4RoqVa"}

4.获取数据

使用GET方法读取数据

我们可以发送GET请求到数据的URL来读取数据。

WWW www = new WWW("https://.wilddogio.com/user.json"); 
yield return www; 
if (www.isDone && www.error == null) 
{ 
    Debug.Log("WebData" + www.text); 
}

成功的请求将返回HTTP 200 OK状态码,并且响应中会包含读取到的数据。

添加URI参数

当我们从数据库中读取数据的时候,REST API可以接受多个参数。下面是最常用的参数。想了解全部的参数,请参见 REST API 文档。

想了解更多关于 Wilddog Rest API 的信息,请参考 https://z.wilddog.com/rest/quickstart

你可能感兴趣的:(野狗,unity3d,put,patch)