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