博客 / 詳情

返回

Wilddog Rest API 在 unity3d 中的使用

圖片描述

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://<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

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.