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

相關文章
相關標籤/搜索