1.1 建立一个帐号数据库
首先,注册并登陆 Wilddog 帐号,进入控制面板。而后,在控制面板中,添加一个新的应用。json
你会获得一个应用的 URL https://[appid].wilddogio.com。你能够把这个URL理解为云端数据库的地址。app
1.2 使用Rest APIide
在任何支持 HTTPS 的平台和语言中,均可以使用 Wilddog Rest API。在本向导中,咱们使用 unity3d 中的 WWW 发送 HTTPS 请求。post
保存数据的方式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"}
使用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