分享方式:


適用於 Azure Functions 的 Mobile Apps 系結

注意

Azure Mobile Apps 系結僅適用於 Azure Functions 1.x。 Azure Functions 2.x 和更新版本中不支持它們。

本文說明如何在 Azure Functions 中使用 Azure Mobile Apps 系結。 Azure Functions 支援 Mobile Apps 的輸入和輸出系結。

Mobile Apps 系結可讓您讀取及更新行動應用程式中的數據表。

套件 - Functions 1.x

Mobile Apps 系結會在 Microsoft.Azure.WebJobs.Extensions.MobileApps NuGet 套件 1.x 版中提供。 套件的原始碼位於 azure-webjobs-sdk-extensions GitHub 存放庫中。

下表列出如何在每個開發環境中新增輸出系結的支援。

開發環境 在 Functions 1.x 中新增支援
本機開發:C# 類別庫 安裝套件
本機開發:C# 腳本、JavaScript、F# 自動
入口網站開發 自動

輸入

Mobile Apps 輸入系結會從行動數據表端點載入記錄,並將其傳遞至您的函式。 在 C# 和 F# 函式中,當函式順利結束時,記錄所做的任何變更都會自動傳回數據表。

輸入 - 範例

請參閱特定語言範例:

下列範例示範 function.json 檔案中的Mobile Apps 輸入系結,以及使用系結的 C# 腳本函式。 函式是由具有記錄標識符的佇列訊息所觸發。 函式會讀取指定的記錄,並修改其 Text 屬性。

以下是 function.json 檔案中的繫結資料:

{
"bindings": [
    {
        "name": "myQueueItem",
        "queueName": "myqueue-items",
        "connection": "",
        "type": "queueTrigger",
        "direction": "in"
    },
    {
        "name": "record",
        "type": "mobileTable",
        "tableName": "MyTable",
        "id": "{queueTrigger}",
        "connection": "My_MobileApp_Url",
        "apiKey": "My_MobileApp_Key",
        "direction": "in"
    }
]
}

區段說明這些屬性。

以下是 C# 指令碼程式碼:

#r "Newtonsoft.Json"    
using Newtonsoft.Json.Linq;

public static void Run(string myQueueItem, JObject record)
{
    if (record != null)
    {
        record["Text"] = "This has changed.";
    }    
}

輸入 - 屬性

C# 類別庫中,使用 MobileTable 屬性。

如需您可以設定的屬性屬性資訊,請參閱 下列組態一節

輸入 - 組態

下表說明您在 function.json 檔案和 MobileTable 屬性中設定的系結組態屬性。

function.json 屬性 屬性內容 描述
type n/a 必須設定為 “mobileTable”
direction n/a 必須設定為 “in”
name n/a 函式簽章中的輸入參數名稱。
tableName TableName 行動應用程式數據表的名稱
id Id 要擷取之記錄的標識碼。 可以是靜態或以叫用函式的觸發程式為基礎。 例如,如果您使用函式的佇列觸發程式,則 "id": "{queueTrigger}" 使用佇列訊息的字串值做為要擷取的記錄標識符。
connection [連接] 具有行動應用程式 URL 的應用程式設定名稱。 函式會使用此 URL 來針對您的行動應用程式建構必要的 REST 作業。 在函式應用程式中建立包含行動應用程式 URL 的應用程式設定,然後在輸入系結的 屬性中 connection 指定應用程式設定的名稱。 URL 看起來像 https://<appname>.azurewebsites.net
apiKey ApiKey 具有行動應用程式 API 金鑰的應用程式設定名稱。 如果您在 Node.js行動應用程式中實作 API 金鑰,或在 .NET 行動應用程式中實作 API 金鑰,請提供 API 金鑰。 若要提供金鑰,請在函式應用程式中建立包含 API 金鑰的應用程式設定,然後使用應用程式設定的名稱,在輸入系結中新增 apiKey 屬性。

當您在本機開發時,請在集合中的 local.settings.json 檔案Values中新增應用程式設定。

重要

請勿與行動應用程式用戶端共用 API 金鑰。 它應該只安全地散發給服務端用戶端,例如 Azure Functions。 Azure Functions 會將您的連線資訊和 API 金鑰儲存為應用程式設定,使其不會簽入原始檔控制存放庫。 這會保護您的敏感性資訊。

輸入 - 使用量

在 C# 函式中,找到具有指定標識碼的記錄時,它會傳遞至具名 JObject 參數。 找不到記錄時,參數值為 null

在 JavaScript 函式中,記錄會傳遞至 context.bindings.<name> 物件。 找不到記錄時,參數值為 null

在 C# 和 F# 函式中,您對輸入記錄所做的任何變更(輸入參數)都會在函式順利結束時自動傳回數據表。 您無法在 JavaScript 函式中修改記錄。

輸出

使用Mobile Apps輸出系結,將新記錄寫入Mobile Apps資料表。

輸出 - 範例

下列範例顯示 由佇列訊息觸發的 C# 函式 ,並在行動應用程式數據表中建立記錄。

[FunctionName("MobileAppsOutput")]        
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
    TraceWriter log)
{
    return new { Text = $"I'm running in a C# function! {myQueueItem}" };
}

輸出 - 屬性

C# 類別庫中,使用 MobileTable 屬性。

如需您可以設定的屬性屬性資訊,請參閱 輸出 - 組態。 以下是 MobileTable 方法簽章中的屬性範例:

[FunctionName("MobileAppsOutput")]        
[return: MobileTable(ApiKeySetting = "MyMobileAppKey", TableName = "MyTable", MobileAppUriSetting = "MyMobileAppUri")]
public static object Run(
    [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
    TraceWriter log)
{
    ...
}

輸出 - 組態

下表說明您在 function.json 檔案和 MobileTable 屬性中設定的系結組態屬性。

function.json 屬性 屬性內容 描述
type n/a 必須設定為 “mobileTable”
direction n/a 必須設定為 “out”
name n/a 函式簽章中的輸出參數名稱。
tableName TableName 行動應用程式數據表的名稱
connection MobileAppUriSetting 具有行動應用程式 URL 的應用程式設定名稱。 函式會使用此 URL 來針對您的行動應用程式建構必要的 REST 作業。 在函式應用程式中建立包含行動應用程式 URL 的應用程式設定,然後在輸入系結的 屬性中 connection 指定應用程式設定的名稱。 URL 看起來像 https://<appname>.azurewebsites.net
apiKey ApiKeySetting 具有行動應用程式 API 金鑰的應用程式設定名稱。 如果您在行動應用程式後端Node.js實作 API 金鑰,或在 .NET 行動應用程式後端中實作 API 金鑰,請提供 API 金鑰。 若要提供金鑰,請在函式應用程式中建立包含 API 金鑰的應用程式設定,然後使用應用程式設定的名稱,在輸入系結中新增 apiKey 屬性。

當您在本機開發時,請在集合中的 local.settings.json 檔案Values中新增應用程式設定。

重要

請勿與行動應用程式用戶端共用 API 金鑰。 它應該只安全地散發給服務端用戶端,例如 Azure Functions。 Azure Functions 會將您的連線資訊和 API 金鑰儲存為應用程式設定,使其不會簽入原始檔控制存放庫。 這會保護您的敏感性資訊。

輸出 - 使用量

在 C# 文稿函式中,使用 類型的 out object 具名輸出參數來存取輸出記錄。 在 C# 類別庫中, MobileTable 屬性可以搭配下列任何類型使用:

  • ICollector<T>IAsyncCollector<T>,其中 TJObject 或具有 public string Id 屬性的任何型別。
  • out JObject
  • out Tout T[],其中 T 是具有 public string Id 屬性的任何 Type。

在 Node.js 函式中,使用 context.bindings.<name> 來存取輸出記錄。

下一步