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