Wilddog Rest API 在 unity3d 中的使用

图片描述

1.安装与配置

1.1 建立一个帐号数据库

首先,注册并登陆 Wilddog 帐号,进入控制面板。而后,在控制面板中,添加一个新的应用。json

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

1.2 使用Rest APIide

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

2.保存数据

保存数据的方式ui

图片描述

使用PUT来写入数据url

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

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

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

string url = "https://<appId>.wilddogio.com/user.json";
string postString = "{\"alanisawesome\": {" + 
   "\"name\": \"Alan Turing\"," +
   "\"birthday\": \"June 23, 1912\"" +
"}}";
byte[] body = Encoding.UTF8.GetBytes(postString); 
Dictionary<string, string> headers = new Dictionary<string, string>();
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://<appId>.wilddogio.com/users/alanisawesome/name.json";
string postString = "Alan Turing";
byte[] body = Encoding.UTF8.GetBytes(postString); 
Dictionary<string, string> headers = new Dictionary<string, string>();
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://<appId>.wilddogio.com/user/alanisawesome.json";
string postString = "{\"nickname\": \"ACE\"}";
byte[] body = Encoding.UTF8.GetBytes(postString); 
Dictionary<string, string> headers = new Dictionary<string, string>();
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://<appId>.wilddogio.com/user/posts.json";
string postString = "{\"alanisawesome\": {" + 
    "\"name\": \"Alan Turing\"," +
    "\"birthday\": \"June 23, 1912\"" +
"}}";
byte[] body = Encoding.UTF8.GetBytes(postString); 
Dictionary<string, string> headers = new Dictionary<string, string>();
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://<appId>.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

相关文章
相关标签/搜索