Mobile Apps bindningar för Azure Functions

Anteckning

Azure Mobile Apps-bindningar är bara tillgängliga för Azure Functions 1.x. De stöds inte i Azure Functions 2.x och senare.

Den här artikeln förklarar hur du arbetar med Azure Mobile Apps-bindningar i Azure Functions. Azure Functions stöder indata- och utdatabindningar för Mobile Apps.

Med Mobile Apps-bindningar kan du läsa och uppdatera datatabeller i mobilappar.

Detta är referensinformation för Azure Functions utvecklare. Om du inte har använt Azure Functions börjar du med följande resurser:

Paket – Functions 1.x

Mobile Apps-bindningar finns i NuGet-paketet Microsoft.Azure.WebJobs.Extensions.MobileApps, version 1.x. Källkoden för paketet finns på lagringsplatsen azure-webjobs-sdk-extensions GitHub.

Följande tabell visar hur du lägger till stöd för den här bindningen i varje utvecklings miljö.

Utvecklingsmiljö För att lägga till stöd i
Functions 1.x
Lokal utveckling – klass bibliotek i C# Installera paketet
Lokal utveckling – C#-skript, Java Script, F # Automatiskt
Portal utveckling Automatiskt

Indata

Den Mobile Apps indatabindningen läser in en post från en mobil tabellslutpunkt och skickar den till din funktion. I C# och F#-funktioner skickas alla ändringar som görs i posten automatiskt tillbaka till tabellen när funktionen avslutas.

Indata – exempel

Se det språkspecifika exemplet:

Indata – C#-skriptexempel

I följande exempel visas en Mobile Apps i en function.jspå filen och en C#-skriptfunktion som använder bindningen. Funktionen utlöses av ett kömeddelande som har en postidentifierare. Funktionen läser den angivna posten och ändrar dess Text egenskap.

Här är bindningsdata i filen function.jsfilen:

{
"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"
    }
]
}

Konfigurationsavsnittet förklarar dessa egenskaper.

Här är C#-skriptkoden:

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

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

Indata – JavaScript

I följande exempel visas en Mobile Apps i en function.jspå filen och en JavaScript-funktion som använder bindningen. Funktionen utlöses av ett kömeddelande som har en postidentifierare. Funktionen läser den angivna posten och ändrar dess Text egenskap.

Här är bindningsdata i filen function.jsfilen:

{
"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"
    }
]
}

Konfigurationsavsnittet förklarar dessa egenskaper.

Här är JavaScript-koden:

module.exports = function (context, myQueueItem) {    
    context.log(context.bindings.record);
    context.done();
};

Indata – attribut

I C#-klassbibliotekanvänder du attributet MobileTable.

Information om attributegenskaper som du kan konfigurera finns i konfigurationsavsnittet nedan.

Indata – konfiguration

I följande tabell beskrivs de bindningskonfigurationsegenskaper som du anger ifunction.jspå filen och MobileTable attributet .

function.jspå egenskapen Attributegenskap Beskrivning
Typ saknas Måste vara inställt på "mobileTable"
riktning saknas Måste anges till "in"
Namn saknas Namnet på indataparametern i funktionssignaturen.
Tablename TableName Namnet på mobilappens datatabell
id Id Identifieraren för den post som ska hämtas. Kan vara statiskt eller baseras på utlösaren som anropar funktionen. Om du till exempel använder en köutlösare för funktionen använder strängvärdet för "id": "{queueTrigger}" kömeddelandet som post-ID för att hämta.
Anslutning Anslutning Namnet på en appinställning som har mobilappens URL. Funktionen använder den här URL:en för att konstruera de nödvändiga REST-åtgärderna mot din mobilapp. Skapa en appinställning i funktionsappen som innehåller mobilappens URL och ange sedan namnet på appinställningen i egenskapen i connection indatabindningen. URL:en ser ut så http://<appname>.azurewebsites.net här: .
apiKey ApiKey Namnet på en appinställning som har mobilappens API-nyckel. Ange API-nyckeln om du implementerar en API-nyckel Node.js mobilappen eller implementerar en API-nyckel i din .NET-mobilapp. Om du vill ange nyckeln skapar du en appinställning i funktionsappen som innehåller API-nyckeln och lägger sedan till egenskapen i indatabindningen med apiKey namnet på appinställningen.

När du utvecklar lokalt går appinställningarna till ilocal.settings.js på filen.

Viktigt

Dela inte API-nyckeln med dina mobilappklienter. Den bör endast distribueras på ett säkert sätt till klienter på tjänstsidan, till exempel Azure Functions. Azure Functions lagrar anslutningsinformationen och API-nycklarna som appinställningar så att de inte checkas in på lagringsplatsen för källkontroll. Detta skyddar känslig information.

Indata – användning

När posten med det angivna ID:t hittas i C#-funktioner skickas den till den namngivna JObject-parametern. När posten inte hittas är parametervärdet null .

I JavaScript-funktioner skickas posten till context.bindings.<name> -objektet. När posten inte hittas är parametervärdet null .

I C# och F#-funktioner skickas alla ändringar du gör i indataposten (indataparametern) automatiskt tillbaka till tabellen när funktionen avslutas. Du kan inte ändra en post i JavaScript-funktioner.

Utdata

Använd utdatabindningen Mobile Apps att skriva en ny post till en Mobile Apps tabell.

Utdata – exempel

Se det språkspecifika exemplet:

Utdata – C#-exempel

I följande exempel visas en C#-funktion som utlöses av ett kömeddelande och skapar en post i en mobilapptabell.

[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}" };
}

Utdata – C#-skriptexempel

I följande exempel visas en Mobile Apps utdatabindning i enfunction.jspå filen och en C#-skriptfunktion som använder bindningen. Funktionen utlöses av ett kömeddelande och skapar en ny post med hårdkodat värde för Text egenskapen .

Här är bindningsdata i filen function.jsfilen:

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

Konfigurationsavsnittet förklarar dessa egenskaper.

Här är C#-skriptkoden:

public static void Run(string myQueueItem, out object record)
{
    record = new {
        Text = $"I'm running in a C# function! {myQueueItem}"
    };
}

Utdata – JavaScript-exempel

I följande exempel visas en Mobile Apps utdatabindning i enfunction.jspå filen och en JavaScript-funktion som använder bindningen. Funktionen utlöses av ett kömeddelande och skapar en ny post med hårdkodat värde för Text egenskapen .

Här är bindningsdata i filen function.jsfilen:

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

Konfigurationsavsnittet förklarar dessa egenskaper.

Här är JavaScript-koden:

module.exports = function (context, myQueueItem) {

    context.bindings.record = {
        text : "I'm running in a Node function! Data: '" + myQueueItem + "'"
    }   

    context.done();
};

Utdata – attribut

I C#-klassbibliotekanvänder du attributet MobileTable.

Information om attributegenskaper som du kan konfigurera finns i Utdata – konfiguration. Här är ett MobileTable attributexempel i en metodsignatur:

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

Ett fullständigt exempel finns i Utdata – C#-exempel.

Utdata – konfiguration

I följande tabell beskrivs de bindningskonfigurationsegenskaper som du anger ifunction.jspå filen och MobileTable attributet .

function.jspå egenskapen Attributegenskap Beskrivning
Typ saknas Måste anges till "mobileTable"
riktning saknas Måste anges till "out"
Namn saknas Namnet på utdataparametern i funktionssignaturen.
Tablename TableName Namnet på mobilappens datatabell
Anslutning MobileAppUriSetting Namnet på en appinställning som har mobilappens URL. Funktionen använder den här URL:en för att konstruera de nödvändiga REST-åtgärderna mot din mobilapp. Skapa en appinställning i funktionsappen som innehåller mobilappens URL och ange sedan namnet på appinställningen i egenskapen i connection indatabindningen. URL:en ser ut så http://<appname>.azurewebsites.net här: .
apiKey ApiKeySetting Namnet på en appinställning som har mobilappens API-nyckel. Ange API-nyckeln om du implementerar en API-nyckel i Node.js mobilapps-backend eller implementerar en API-nyckel i din .NET-mobilapps-backend. Om du vill ange nyckeln skapar du en appinställning i funktionsappen som innehåller API-nyckeln och lägger sedan till egenskapen i indatabindningen med apiKey namnet på appinställningen.

När du utvecklar lokalt går appinställningarna till ilocal.settings.js på filen.

Viktigt

Dela inte API-nyckeln med dina mobilappklienter. Den bör endast distribueras på ett säkert sätt till klienter på tjänstsidan, till exempel Azure Functions. Azure Functions lagrar anslutningsinformationen och API-nycklarna som appinställningar så att de inte checkas in på lagringsplatsen för källkontroll. Detta skyddar din känsliga information.

Utdata – användning

I C#-skriptfunktioner använder du en namngiven utdataparameter av typen out object för att komma åt utdataposten. I C#-klassbibliotek MobileTable kan attributet användas med någon av följande typer:

  • ICollector<T> eller IAsyncCollector<T> , där är T JObject antingen eller någon typ med en public string Id egenskap.
  • out JObject
  • out T eller out T[] , där är valfri typ med en T public string Id egenskap.

I Node.js använder du för att context.bindings.<name> komma åt utdataposten.

Nästa steg