Aracılığıyla paylaş


Mobile Apps Node.js SDK'sını kullanma

Bu makalede, Azure App Service Mobile Apps özelliğinde Node.js arka ucuyla nasıl çalışıldığını gösteren ayrıntılı bilgiler ve örnekler sağlanmaktadır.

Giriş

Mobile Apps, bir web uygulamasına mobil için iyileştirilmiş veri erişimi Web API'sini ekleme özelliği sağlar. Mobile Apps SDK'sı ASP.NET ve Node.js web uygulamaları için sağlanır. SDK aşağıdaki işlemleri sağlar:

  • Veri erişimi için tablo işlemleri (okuma, ekleme, güncelleştirme, silme)
  • Özel API işlemleri

Her iki işlem de Azure App Service izin veren tüm kimlik sağlayıcılarında kimlik doğrulaması sağlar. Bu sağlayıcılar Facebook, Twitter, Google ve Microsoft gibi sosyal kimlik sağlayıcılarının yanı sıra kurumsal kimlik için Azure Active Directory içerir.

Her kullanım örneği için örnekleri GitHub'daki samples dizininde bulabilirsiniz.

Desteklenen platformlar

Mobile Apps Node.js SDK'sı, Node ve sonraki sürümlerin geçerli LTS sürümünü destekler. Şu anda en son LTS sürümü Node v4.5.0'dır. Node'un diğer sürümleri çalışabilir ancak desteklenmez.

Mobile Apps Node.js SDK'sı iki veritabanı sürücüsünü destekler:

  • node-mssql sürücüsü Azure SQL Veritabanı ve yerel SQL Server örneklerini destekler.
  • sqlite3 sürücüsü yalnızca tek bir örnekteki SQLite veritabanlarını destekler.

Komut satırını kullanarak temel Node.js arka ucu oluşturma

Her Mobile Apps Node.js arka ucu bir ExpressJS uygulaması olarak başlar. ExpressJS, Node.js için kullanılabilen en popüler web hizmeti çerçevesidir. Aşağıdaki gibi temel bir Express uygulaması oluşturabilirsiniz:

  1. Bir komutta veya PowerShell penceresinde projeniz için bir dizin oluşturun:

     mkdir basicapp
    
  2. Paket yapısını başlatmak için komutunu çalıştırın npm init :

     cd basicapp
     npm init
    

    Komut, npm init projeyi başlatmak için bir dizi soru sorar. Örnek çıktıya bakın:

    The npm init output

  3. express ve azure-mobile-apps kitaplıklarını npm deposundan yükleyin:

     npm install --save express azure-mobile-apps
    
  4. Temel mobil sunucuyu uygulamak için bir app.js dosyası oluşturun:

    var express = require('express'),
        azureMobileApps = require('azure-mobile-apps');
    
    var app = express(),
        mobile = azureMobileApps();
    
    // Define a TodoItem table.
    mobile.tables.add('TodoItem');
    
    // Add the Mobile API so it is accessible as a Web API.
    app.use(mobile);
    
    // Start listening on HTTP.
    app.listen(process.env.PORT || 3000);
    

Bu uygulama, dinamik şema kullanarak temel alınan bir SQL veri deposuna kimliği doğrulanmamış erişim sağlayan tek bir uç nokta (/tables/TodoItem) ile mobil için iyileştirilmiş bir Web API'sini oluşturur. İstemci kitaplığı hızlı başlangıçlarını takip için uygundur:

Bu temel uygulamanın kodunu GitHub'daki basicapp örneğinde bulabilirsiniz.

Visual Studio 2015 kullanarak Node.js arka ucu oluşturma

Visual Studio 2015, IDE içinde Node.js uygulamaları geliştirmek için bir uzantı gerektirir. Başlamak için Visual Studio içinNode.js Araçları 1.1'i yükleyin. Yüklemeyi tamamladığınızda bir Express 4.x uygulaması oluşturun:

  1. Yeni Project iletişim kutusunu açın (Dosya>Yeni>Project).

  2. Şablonlar>JavaScript>Node.jsgenişletin.

  3. Temel Azure Node.js Express 4 Uygulaması'nı seçin.

  4. Proje adını girin. Tamam’ı seçin.

    Visual Studio 2015 new project

  5. npm düğümüne sağ tıklayın ve Yeni npm paketleri yükle'yi seçin.

  6. İlk Node.js uygulamanızı oluşturduktan sonra npm kataloğu yenilemeniz gerekebilir. Gerekirse Yenile'yi seçin.

  7. Arama kutusuna azure-mobile-apps yazın. azure-mobile-apps 2.0.0 paketini ve ardından Paketi Yükle'yi seçin.

    Install new npm packages

  8. Kapat’ı seçin.

  9. Mobile Apps SDK'sı için destek eklemek için app.js dosyasını açın. Kitaplık require deyimlerinin en altındaki 6. satıra aşağıdaki kodu ekleyin:

    var bodyParser = require('body-parser');
    var azureMobileApps = require('azure-mobile-apps');
    

    Diğer app.use deyimlerden yaklaşık 27. satıra aşağıdaki kodu ekleyin:

    app.use('/users', users);
    
    // Mobile Apps initialization
    var mobile = azureMobileApps();
    mobile.tables.add('TodoItem');
    app.use(mobile);
    

    Dosyayı kaydedin.

  10. Uygulamayı yerel olarak çalıştırın (API üzerinde https://localhost:3000sunulur) veya Azure'da yayımlayın.

Azure portal kullanarak Node.js arka ucu oluşturma

Mobile Apps arka ucunu doğrudan Azure portal oluşturabilirsiniz. Mobil uygulama oluşturma öğreticisini izleyerek aşağıdaki adımları tamamlayabilir veya birlikte bir istemci ve sunucu oluşturabilirsiniz. Öğretici, bu yönergelerin basitleştirilmiş bir sürümünü içerir ve kavram kanıtı projeleri için en iyisidir.

  1. Azure portalda oturum açın.

  2. +YENİ>Web + Mobil Mobil>Uygulama'yı seçin ve ardından Mobile Apps arka ucunuz için bir ad sağlayın.

  3. Kaynak Grubu için mevcut bir kaynak grubunu seçin veya yeni bir tane oluşturun (uygulamanızla aynı adı kullanarak).

  4. App Service plan için varsayılan plan (Standart katmanda) seçilir. Ayrıca farklı bir plan seçebilir veya yeni bir plan oluşturabilirsiniz.

    App Service planının ayarları, uygulamanızla ilişkili konumu, özellikleri, maliyeti ve işlem kaynaklarını belirler. App Service planları ve farklı bir fiyatlandırma katmanında ve istediğiniz konumda yeni bir plan oluşturma hakkında daha fazla bilgi için bkz. Ayrıntılı Azure App Service planlara genel bakış.

  5. Oluştur’u seçin. Bu adım Mobile Apps arka ucunu oluşturur.

  6. Yeni Mobile Apps arka ucunun Ayarlar bölmesinde, bir veritabanı Bağlan istemci uygulama platformunuzu >hızlı başlat'ı> seçin.

    Selections for connecting a database

  7. Veri bağlantısı ekle bölmesinde SQL Veritabanı>Yeni veritabanı oluştur'u seçin. Veritabanı adını girin, bir fiyatlandırma katmanı seçin ve ardından Sunucu'ya tıklayın. Bu yeni veritabanını yeniden kullanabilirsiniz. Aynı konumda zaten bir veritabanınız varsa, bunun yerine Mevcut veritabanlarından birini kullanın’ı seçebilirsiniz. Bant genişliği maliyetleri ve daha yüksek gecikme süresi nedeniyle veritabanının farklı bir konumda kullanılmasını önermiyoruz.

    Selecting a database

  8. Yeni sunucu bölmesinde, Sunucu adı kutusuna benzersiz bir sunucu adı girin, oturum açma ve parola girin, Azure hizmetlerinin sunucuya erişmesine izin ver'i seçin ve Tamam'ı seçin. Bu adım yeni veritabanını oluşturur.

  9. Veri bağlantısı ekle bölmesinde Bağlantı dizesi'ni seçin, veritabanınızın oturum açma ve parola değerlerini girin ve Tamam'ı seçin.

    Devam etmeden önce veritabanının başarıyla dağıtılması için birkaç dakika bekleyin.

Kullanmaya başlayın bölmesindeki Tablo API'sini oluştur'un altında arka uç diliniz olarak Node.js'i seçin. Bunun tüm site içeriğinin üzerine yazılacağını kabul ediyorum kutusunu seçin ve ardından TodoItem tablosu oluştur'u seçin.

Git kullanarak Node.js arka uç hızlı başlangıç kod projesini indirme

Portalın Hızlı başlangıç bölmesini kullanarak bir Node.js Mobile Apps arka ucu oluşturduğunuzda, sizin için bir Node.js projesi oluşturulur ve sitenize dağıtılır. Portalda tablolar ve API'ler ekleyebilir ve Node.js arka ucu için kod dosyalarını düzenleyebilirsiniz. Ayrıca, arka uç projesini indirmek için çeşitli dağıtım araçlarını kullanarak tablo ve API'ler ekleyip değiştirebilir ve sonra projeyi yeniden yayımlayabilirsiniz. Daha fazla bilgi için bkz. Azure App Service dağıtım kılavuzu.

Aşağıdaki yordamda, hızlı başlangıç proje kodunu indirmek için bir Git deposu kullanılır:

  1. Henüz yapmadıysanız Git'i yükleyin. Git'i yüklemek için gereken adımlar, işletim sistemleri arasında farklılık gösterir. İşletim sistemine özgü dağıtımlar ve yükleme yönergeleri için bkz . Git'i yükleme.

  2. Arka uç siteniz için Git deposunu etkinleştirmek için bkz. Deponuzu hazırlama. Dağıtım kullanıcı adını ve parolasını not edin.

  3. Mobile Apps arka ucunuz için bölmede Git kopyası URL'si ayarını not edin.

  4. Git kopyası URL'sini git clone kullanarak komutunu yürütür. Aşağıdaki örnekte olduğu gibi gerektiğinde parolanızı girin:

     $ git clone https://username@todolist.scm.azurewebsites.net:443/todolist.git
    
  5. Yerel dizine (/todolist önceki örnekte) göz atın ve proje dosyalarının indirildiğine dikkat edin. dizininde todoitem.json dosyasını /tables bulun. Bu dosya, tablo üzerindeki izinleri tanımlar. todoitem.js dosyasını aynı dizinde de bulabilirsiniz. Tablo için CRUD işlemi betiklerini tanımlar.

  6. Proje dosyalarında değişiklik yaptıktan sonra, değişiklikleri eklemek, işlemek ve ardından siteye yüklemek için aşağıdaki komutları çalıştırın:

     $ git commit -m "updated the table script"
     $ git push origin master
    

    Projeye yeni dosyalar eklediğinizde, önce komutunu çalıştırmanız git add . gerekir.

Siteye her yeni işleme kümesi gönderildiğinde site yeniden yayımlanır.

Node.js arka ucunuzu Azure'da yayımlama

Microsoft Azure, Mobile Apps Node.js arka ucu Azure hizmetine yayımlamak için birçok mekanizma sağlar. Bu mekanizmalar Visual Studio tümleştirilmiş dağıtım araçlarını, komut satırı araçlarını ve kaynak denetimine dayalı sürekli dağıtım seçeneklerini içerir. Daha fazla bilgi için Azure App Service dağıtım kılavuzuna bakın.

Azure App Service Node.js uygulamaları için arka ucu yayımlamadan önce gözden geçirmeniz gereken özel öneriler vardır:

Uygulamanız için giriş sayfasını etkinleştirme

Birçok uygulama, web ve mobil uygulamaların birleşimidir. ExpressJS çerçevesini kullanarak iki model birleştirebilirsiniz. Ancak bazen yalnızca bir mobil arabirim uygulamak isteyebilirsiniz. Uygulama hizmetinin çalışır durumda olduğundan emin olmak için bir giriş sayfası sağlamak yararlıdır. Kendi giriş sayfanızı sağlayabilir veya geçici bir giriş sayfasını etkinleştirebilirsiniz. Geçici bir giriş sayfasını etkinleştirmek için aşağıdaki kodu kullanarak Mobile Apps örneği oluşturun:

var mobile = azureMobileApps({ homePage: true });

Bu seçeneğin yalnızca yerel olarak geliştirme sırasında kullanılabilir olmasını istiyorsanız, bu ayarı azureMobile.js dosyanıza ekleyebilirsiniz.

Tablo işlemleri

Azure-mobile-apps Node.js Server SDK'sı, Azure SQL Veritabanı'da depolanan veri tablolarını Web API'si olarak kullanıma sunmak için mekanizmalar sağlar. Beş işlem sağlar:

İşlem Description
GET /tables/tablename Tablodaki tüm kayıtları alın.
GET /tables/tablename/:id Tabloda belirli bir kaydı alma.
POST /tables/tablename Tabloda bir kayıt oluşturun.
PATCH /tables/tablename/:id Tablodaki bir kaydı güncelleştirin.
DELETE /tables/tablename/:id Tablodaki bir kaydı silin.

Bu Web API'si OData'yi destekler ve tablo şemasını çevrimdışı veri eşitlemeyi destekleyecek şekilde genişletir.

Dinamik şema kullanarak tabloları tanımlama

Tabloyu kullanabilmeniz için önce tanımlamanız gerekir. Statik bir şema kullanarak (şemadaki sütunları tanımladığınız) veya dinamik olarak (SDK'nın gelen isteklere göre şemayı denetlediği) tabloları tanımlayabilirsiniz. Ayrıca tanıma JavaScript kodu ekleyerek Web API'sinin belirli yönlerini denetleyebilirsiniz.

En iyi yöntem olarak, her tabloyu dizinindeki bir JavaScript dosyasında tables tanımlamanız ve ardından tabloları içeri aktarmak için yöntemini kullanmanız tables.import() gerekir. Temel uygulama örneğini genişleterek app.js dosyasını ayarlayabilirsiniz:

var express = require('express'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Define the database schema that is exposed.
mobile.tables.import('./tables');

// Provide initialization of any tables that are statically defined.
mobile.tables.initialize().then(function () {
    // Add the Mobile API so it is accessible as a Web API.
    app.use(mobile);

    // Start listening on HTTP.
    app.listen(process.env.PORT || 3000);
});

Tabloyu ./tables/TodoItem.js olarak tanımlayın:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Additional configuration for the table goes here.

module.exports = table;

Tablolar varsayılan olarak dinamik şema kullanır. Dinamik şemayı genel olarak kapatmak için Azure portal uygulama ayarını false olarak ayarlayınMS_DynamicSchema.

GitHub yapılacaklar örneğinde tam bir örnek bulabilirsiniz.

Statik şema kullanarak tabloları tanımlama

Web API'sini kullanarak kullanıma açmak için sütunları açıkça tanımlayabilirsiniz. azure-mobile-apps Node.js SDK' sı, çevrimdışı veri eşitleme için gereken ek sütunları otomatik olarak sağladığınız listeye ekler. Örneğin, hızlı başlangıç istemci uygulamaları iki sütunlu bir tablo gerektirir: text (dize) ve complete (Boole).
Tablo, tablo tanımı JavaScript dosyasında (dizinde tables bulunur) aşağıdaki gibi tanımlanabilir:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

module.exports = table;

Tabloları statik olarak tanımlarsanız, başlangıçta veritabanı şemasını oluşturmak için yöntemini de çağırmanız tables.initialize() gerekir. tables.initialize() yöntemi, web hizmetinin veritabanı başlatılmadan önce isteklere hizmet vermemesi için bir promise döndürür.

SQL Server Express yerel makinenizde geliştirme veri deposu olarak kullanma

Mobile Apps Node.js SDK'sı, verileri kullanıma hazır olarak sunmak için üç seçenek sunar:

  • Kalıcı olmayan bir örnek depo sağlamak için bellek sürücüsünü kullanın.
  • Geliştirme için bir SQL Server Express veri deposu sağlamak için mssql sürücüsünü kullanın.
  • Üretim için bir Azure SQL Veritabanı veri deposu sağlamak için mssql sürücüsünü kullanın.

Mobile Apps Node.js SDK'sı, hem SQL Server Express hem de SQL Veritabanı bağlantı kurmak ve kullanmak için mssql Node.js paketini kullanır. Bu paket, SQL Server Express örneğinizde TCP bağlantılarını etkinleştirmenizi gerektirir.

İpucu

Bellek sürücüsü test için eksiksiz bir olanak kümesi sağlamaz. Arka ucunuzu yerel olarak test etmek istiyorsanız, SQL Server Express veri deposu ve mssql sürücüsünün kullanılmasını öneririz.

  1. Microsoft SQL Server 2014 Express'i indirip yükleyin. SQL Server 2014 Express with Tools sürümünü yüklediğinizden emin olun. Açıkça 64 bit destek gerektirmediğiniz sürece, 32 bit sürüm çalışırken daha az bellek tüketir.

  2. SQL Server 2014 Configuration Manager çalıştırın:

    a. Ağaç menüsündeki SQL Server Ağ Yapılandırması düğümünü genişletin.

    b. SQLEXPRESS için Protokoller'i seçin.

    c. TCP/IP'ye sağ tıklayın ve Etkinleştir'i seçin. Açılır iletişim kutusunda Tamam'ı seçin.

    d. TCP/IP'ye sağ tıklayın ve Özellikler'i seçin.

    e. IP Adresleri sekmesini seçin.

    f. IPAll düğümünü bulun. TCP Bağlantı Noktası alanına 1433 girin.

    Configure SQL Server Express for TCP/IP

    g. Tamam’ı seçin. Açılır iletişim kutusunda Tamam'ı seçin.

    h. Ağaç menüsünden SQL Server Hizmetleri'ni seçin.

    i. SQL Server (SQLEXPRESS) öğesine sağ tıklayın ve Yeniden Başlat'ı seçin.

    j. SQL Server 2014 Configuration Manager kapatın.

  3. SQL Server 2014 Management Studio çalıştırın ve yerel SQL Server Express örneğine bağlanın:

    1. Nesne Gezgini'da örneğinize sağ tıklayın ve Özellikler'i seçin.

    2. Güvenlik sayfasını seçin.

    3. SQL Server ve Windows Kimlik Doğrulama modunun seçili olduğundan emin olun.

    4. Tamam’ı seçin.

      Configure SQL Server Express authentication

    5. Nesne Gezgini'de Güvenlik>Oturum Açma bilgileri'ne genişletin.

    6. Oturum Açma bilgileri'ne sağ tıklayın ve Yeni Oturum Aç'ı seçin.

    7. Bir oturum açma adı girin. Kimlik doğrulaması SQL Server seçin. Parolayı girin ve ardından Parolayı onayla bölümüne aynı parolayı girin. Parolanın Windows karmaşıklık gereksinimlerini karşılaması gerekir.

    8. Tamam’ı seçin.

      Add a new user to SQL Server Express

    9. Yeni oturum açma bilgilerinize sağ tıklayın ve Özellikler'i seçin.

    10. Sunucu Rolleri sayfasını seçin.

    11. Dbcreator sunucu rolünün onay kutusunu seçin.

    12. Tamam’ı seçin.

    13. SQL Server 2015 Management Studio kapatın.

Seçtiğiniz kullanıcı adını ve parolayı kaydettiğinizden emin olun. Veritabanı gereksinimlerinize bağlı olarak ek sunucu rolleri veya izinleri atamanız gerekebilir.

Node.js uygulaması bu veritabanının SQLCONNSTR_MS_TableConnectionString bağlantı dizesi için ortam değişkenini okur. Bu değişkeni ortamınızda ayarlayabilirsiniz. Örneğin, PowerShell'i kullanarak bu ortam değişkenini ayarlayabilirsiniz:

$env:SQLCONNSTR_MS_TableConnectionString = "Server=127.0.0.1; Database=mytestdatabase; User Id=azuremobile; Password=T3stPa55word;"

Veritabanına bir TCP/IP bağlantısı üzerinden erişin. Bağlantı için bir kullanıcı adı ve parola girin.

Projenizi yerel geliştirme için yapılandırma

Mobile Apps, yerel dosya sisteminden azureMobile.js adlı bir JavaScript dosyasını okur. Bu dosyayı üretim ortamında Mobile Apps SDK'sını yapılandırmak için kullanmayın. Bunun yerine, Azure portalUygulama ayarlarını kullanın.

azureMobile.js dosyası bir yapılandırma nesnesini dışarı aktarmalıdır. En yaygın ayarlar şunlardır:

  • Veritabanı ayarları
  • Tanılama günlüğü ayarları
  • Alternatif CORS ayarları

Bu örnek azureMobile.js dosyası önceki veritabanı ayarlarını uygular:

module.exports = {
    cors: {
        origins: [ 'localhost' ]
    },
    data: {
        provider: 'mssql',
        server: '127.0.0.1',
        database: 'mytestdatabase',
        user: 'azuremobile',
        password: 'T3stPa55word'
    },
    logging: {
        level: 'verbose'
    }
};

Parolaların bulutta depolanmasını önlemek için .gitignore dosyanıza (veya diğer kaynak kodu denetimi yoksayma dosyası)azureMobile.jseklemenizi öneririz. Üretim ayarlarını her zaman Azure portal içindeki Uygulama ayarlarında yapılandırın.

Mobil uygulamanız için uygulama ayarlarını yapılandırma

azureMobile.js dosyasındaki çoğu ayarın Azure portal eşdeğer bir uygulama ayarı vardır. Uygulamanızı Uygulama ayarlarında yapılandırmak için aşağıdaki listeyi kullanın:

Uygulama ayarı azureMobile.js ayarı Description Geçerli değerler
MS_MobileAppName name Uygulamanın adı string
MS_MobileLoggingLevel logging.level Günlüğe kaydedilecek iletilerin en düşük günlük düzeyi hata, uyarı, bilgi, ayrıntılı, hata ayıklama, aptal
MS_DebugMode hata ayıklama Hata ayıklama modunu etkinleştirir veya devre dışı bırakır true, false
MS_TableSchema data.schema SQL tabloları için varsayılan şema adı string (varsayılan: dbo)
MS_DynamicSchema data.dynamicSchema Hata ayıklama modunu etkinleştirir veya devre dışı bırakır true, false
MS_DisableVersionHeader sürüm (tanımsız olarak ayarlanır) X-ZUMO-Server-Version üst bilgisini devre dışı bırakır true, false
MS_SkipVersionCheck skipversioncheck İstemci API'sinin sürüm denetimini devre dışı bırakır true, false

Uygulama ayarı ayarlamak için:

  1. Azure Portal oturum açın.
  2. Tüm kaynaklar veya Uygulama Hizmetleri'ni seçin ve ardından mobil uygulamanızın adını seçin.
  3. Ayarlar bölmesi varsayılan olarak açılır. Yoksa Ayarlar'ı seçin.
  4. GENEL menüsünde Uygulama ayarları'nı seçin.
  5. Uygulama ayarları bölümüne gidin.
  6. Uygulama ayarınız zaten varsa, değeri düzenlemek için uygulama ayarının değerini seçin. Uygulama ayarınız yoksa, Anahtar kutusuna uygulama ayarını ve Değer kutusuna değeri girin.
  7. Kaydet’i seçin.

Çoğu uygulama ayarlarını değiştirmek için hizmetin yeniden başlatılması gerekir.

üretim veri deponuz olarak SQL Veritabanı kullanma

Veri deposu olarak Azure SQL Veritabanı kullanılması tüm Azure App Service uygulama türlerinde aynıdır. Henüz yapmadıysanız bir Mobile Apps arka ucu oluşturmak için şu adımları izleyin:

  1. Azure Portal oturum açın.

  2. Pencerenin sol üst kısmında +YENİ düğmesini >Web + Mobil Mobil>Uygulama'yı seçin ve ardından Mobile Apps arka ucunuz için bir ad girin.

  3. Kaynak Grubu kutusuna uygulamanızla aynı adı girin.

  4. Varsayılan App Service planı seçilidir. App Service planınızı değiştirmek istiyorsanız:

    a. App Service Plan>+Yeni Oluştur'u seçin.

    b. Yeni App Service planının adını belirtin ve uygun bir konum seçin.

    c. Hizmet için uygun bir fiyatlandırma katmanı seçin. Ücretsiz ve Paylaşılan gibi daha fazla fiyatlandırma seçeneğini görüntülemek için Tümünü görüntüle'yi seçin.

    d. Seç düğmesine tıklayın.

    e. App Service planı bölmesine dönüp Tamam'ı seçin.

  5. Oluştur’u seçin.

Mobile Apps arka ucunun sağlanması birkaç dakika sürebilir. Mobile Apps arka ucu sağlandıktan sonra portal, Mobile Apps arka ucu için Ayarlar bölmesini açar.

Mevcut bir SQL veritabanını Mobile Apps arka ucunuzla bağlamayı veya yeni bir SQL veritabanı oluşturmayı seçebilirsiniz. Bu bölümde bir SQL veritabanı oluşturacağız.

Not

Mobile Apps arka ucuyla aynı konumda zaten bir veritabanınız varsa, bunun yerine Var olan bir veritabanını kullan'ı ve ardından bu veritabanını seçebilirsiniz. Daha yüksek gecikme süreleri nedeniyle veritabanının farklı bir konumda kullanılmasını önermeyiz.

  1. Yeni Mobile Apps arka ucunda Ayarlar Mobil Uygulama>Verileri>+Ekle'yiseçin>.

  2. Veri bağlantısı ekle bölmesinde SQL Veritabanı - Gerekli ayarları> yapılandırYeni veritabanı oluştur'u seçin. Ad kutusuna yeni veritabanının adını girin.

  3. Sunucu'ya tıklayın. Yeni sunucu bölmesinde, Sunucu adı kutusuna benzersiz bir sunucu adı girin ve uygun bir sunucu yöneticisi oturum açma adı ve parolası sağlayın. Azure hizmetlerinin sunucuya erişmesine izin ver'in seçili olduğundan emin olun. Tamam’ı seçin.

    Create an Azure SQL database

  4. Yeni veritabanı bölmesinde Tamam'ı seçin.

  5. Veri bağlantısı ekle bölmesinde Bağlantı dizesi'ni seçin ve veritabanını oluştururken sağladığınız oturum açma bilgilerini ve parolayı girin. Mevcut bir veritabanını kullanıyorsanız, bu veritabanı için oturum açma kimlik bilgilerini sağlayın. Tamam’ı seçin.

  6. Veri bağlantısı ekle bölmesine geri dönüp Tamam'ı seçerek veritabanını oluşturun.

Veritabanının oluşturulması birkaç dakika sürebilir. Dağıtımın ilerleme durumunu izlemek için Bildirimler alanını kullanın. Veritabanı başarıyla dağıtılana kadar ilerlemeyin. Veritabanı dağıtıldıktan sonra, Mobile Apps arka uç uygulama ayarlarınızda SQL Veritabanı örneği için bir bağlantı dizesi oluşturulur. Bu uygulama ayarını Ayarlar>Uygulama ayarları>Bağlantı dizeleri bölümünde görebilirsiniz.

Tablolara erişim için kimlik doğrulaması iste

Uç noktayla tables App Service Kimlik Doğrulaması kullanmak istiyorsanız, önce Azure portal App Service Kimlik Doğrulaması'nı yapılandırmanız gerekir. Daha fazla bilgi için, kullanmayı planladığınız kimlik sağlayıcısının yapılandırma kılavuzuna bakın:

Her tablonun, tabloya erişimi denetlemek için kullanabileceğiniz bir access özelliği vardır. Aşağıdaki örnekte kimlik doğrulamasının gerekli olduğu statik olarak tanımlanmış bir tablo gösterilmektedir.

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

Access özelliği üç değerden birini alabilir:

  • anonim , istemci uygulamasının kimlik doğrulaması olmadan verileri okumasına izin verildiğini gösterir.
  • authenticated , istemci uygulamasının istekle birlikte geçerli bir kimlik doğrulama belirteci göndermesi gerektiğini gösterir.
  • disabled , bu tablonun şu anda devre dışı olduğunu gösterir.

Erişim özelliği tanımsızsa, kimliği doğrulanmamış erişime izin verilir.

Tablolarınızla kimlik doğrulama taleplerini kullanma

Kimlik doğrulaması ayarlanırken istenen çeşitli talepleri ayarlayabilirsiniz. Bu talepler normalde nesnesi aracılığıyla context.user kullanılamaz. Ancak, yöntemini kullanarak context.user.getIdentity() bunları alabilirsiniz. yöntemi, getIdentity() bir nesneye çözümleyen bir promise döndürür. Nesnesi, kimlik doğrulama yöntemi (facebook, google, twitter, microsoftaccountveya aad) tarafından anahtarlanır.

Örneğin, Microsoft hesabı kimlik doğrulamasını ayarlar ve e-posta adresleri talebini isterseniz, e-posta adresini aşağıdaki tablo denetleyicisiyle kayda ekleyebilirsiniz:

var azureMobileApps = require('azure-mobile-apps');

// Create a new table definition.
var table = azureMobileApps.table();

table.columns = {
    "emailAddress": "string",
    "text": "string",
    "complete": "boolean"
};
table.dynamicSchema = false;
table.access = 'authenticated';

/**
* Limit the context query to those records with the authenticated user email address
* @param {Context} context the operation context
* @returns {Promise} context execution Promise
*/
function queryContextForEmail(context) {
    return context.user.getIdentity().then((data) => {
        context.query.where({ emailAddress: data.microsoftaccount.claims.emailaddress });
        return context.execute();
    });
}

/**
* Adds the email address from the claims to the context item - used for
* insert operations
* @param {Context} context the operation context
* @returns {Promise} context execution Promise
*/
function addEmailToContext(context) {
    return context.user.getIdentity().then((data) => {
        context.item.emailAddress = data.microsoftaccount.claims.emailaddress;
        return context.execute();
    });
}

// Configure specific code when the client does a request.
// READ: only return records that belong to the authenticated user.
table.read(queryContextForEmail);

// CREATE: add or overwrite the userId based on the authenticated user.
table.insert(addEmailToContext);

// UPDATE: only allow updating of records that belong to the authenticated user.
table.update(queryContextForEmail);

// DELETE: only allow deletion of records that belong to the authenticated user.
table.delete(queryContextForEmail);

module.exports = table;

Hangi taleplerin kullanılabilir olduğunu görmek için bir web tarayıcısı kullanarak sitenizin /.auth/me uç noktasını görüntüleyin.

Belirli tablo işlemlerine erişimi devre dışı bırakma

Tabloda görünmeye ek olarak, access özelliği tek tek işlemleri denetlemek için kullanılabilir. Dört işlem vardır:

  • read , tablodaki RESTful GET işlemidir.
  • insert , tablodaki RESTful POST işlemidir.
  • update , tablodaki RESTful PATCH işlemidir.
  • delete , tablodaki RESTful DELETE işlemidir.

Örneğin, salt okunur kimliği doğrulanmamış bir tablo sağlamak isteyebilirsiniz:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Read-only table. Only allow READ operations.
table.read.access = 'anonymous';
table.insert.access = 'disabled';
table.update.access = 'disabled';
table.delete.access = 'disabled';

module.exports = table;

Tablo işlemleriyle kullanılan sorguyu ayarlama

Tablo işlemleri için yaygın bir gereksinim, verilerin kısıtlı bir görünümünü sağlamaktır. Örneğin, kimliği doğrulanmış kullanıcı kimliğiyle etiketlenmiş bir tablo sağlayabilirsiniz; böylece yalnızca kendi kayıtlarınızı okuyabilir veya güncelleştirebilirsiniz. Aşağıdaki tablo tanımı bu işlevi sağlar:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define a static schema for the table.
table.columns = {
    "userId": "string",
    "text": "string",
    "complete": "boolean"
};
table.dynamicSchema = false;

// Require authentication for this table.
table.access = 'authenticated';

// Ensure that only records for the authenticated user are retrieved.
table.read(function (context) {
    context.query.where({ userId: context.user.id });
    return context.execute();
});

// When adding records, add or overwrite the userId with the authenticated user.
table.insert(function (context) {
    context.item.userId = context.user.id;
    return context.execute();
});

module.exports = table;

Normalde sorgu çalıştıran işlemler, yan tümcesi kullanarak ayarlayabileceğiniz bir where sorgu özelliğine sahiptir. Query özelliği, bir OData sorgusunu veri arka ucunun işleyebileceği bir şeye dönüştürmek için kullanılan bir QueryJS nesnesidir. Basit eşitlik durumları için (önceki gibi) bir harita kullanabilirsiniz. Ayrıca belirli SQL yan tümceleri de ekleyebilirsiniz:

context.query.where('myfield eq ?', 'value');

Tabloda geçici silmeyi yapılandırma

Geçici silme aslında kayıtları silmez. Bunun yerine, silinen sütunu true olarak ayarlayarak bunları veritabanında silinmiş olarak işaretler. Mobile Apps SDK'sı, Mobil İstemci SDK'sı kullanmadığı IncludeDeleted()sürece geçici olarak silinen kayıtları sonuçlardan otomatik olarak kaldırır. Bir tabloyu geçici silme için yapılandırmak için, tablo tanımı dosyasındaki özelliğini ayarlayın softDelete :

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Turn on soft delete.
table.softDelete = true;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

Kayıtları silmek için bir mekanizma oluşturmanız gerekir: istemci uygulaması, Web İşi, Azure işlevi veya özel API.

Veritabanınızı verilerle tohumla oluşturma

Yeni bir uygulama oluştururken veri içeren bir tablo oluşturmak isteyebilirsiniz. Bunu tablo tanımı JavaScript dosyasında aşağıdaki gibi yapabilirsiniz:

var azureMobileApps = require('azure-mobile-apps');

var table = azureMobileApps.table();

// Define the columns within the table.
table.columns = {
    "text": "string",
    "complete": "boolean"
};
table.seed = [
    { text: 'Example 1', complete: false },
    { text: 'Example 2', complete: true }
];

// Turn off the dynamic schema.
table.dynamicSchema = false;

// Require authentication to access the table.
table.access = 'authenticated';

module.exports = table;

Verilerin dengeli şekilde dağıtılması yalnızca tabloyu oluşturmak için Mobile Apps SDK'sını kullandığınızda gerçekleşir. Tablo veritabanında zaten varsa, tabloya hiçbir veri eklenmez. Dinamik şema açıksa, şema, dengeli verilerden çıkarılır.

Hizmet çalışmaya başladığında tabloyu oluşturmak için yöntemini açıkça çağırmanızı tables.initialize() öneririz.

Swagger desteğini etkinleştirme

Mobile Apps yerleşik Swagger desteğiyle birlikte gelir. Swagger desteğini etkinleştirmek için önce bağımlılık olarak swagger-ui yükleyin:

npm install --save swagger-ui

Ardından Mobile Apps oluşturucusunda Swagger desteğini etkinleştirebilirsiniz:

var mobile = azureMobileApps({ swagger: true });

Büyük olasılıkla yalnızca geliştirme sürümlerinde Swagger desteğini etkinleştirmek istiyorsunuz. Bunu yapmak için uygulama ayarını kullanabilirsiniz NODE_ENV :

var mobile = azureMobileApps({ swagger: process.env.NODE_ENV !== 'production' });

swagger nokta http:// yoursite.azurewebsites.net/swagger konumunda bulunur. Swagger kullanıcı arabirimine uç nokta üzerinden /swagger/ui erişebilirsiniz. Tüm uygulamanızda kimlik doğrulaması gerektirmeyi seçerseniz, Swagger bir hata oluşturur. En iyi sonuçları elde etmek için Azure App Service Kimlik Doğrulaması/Yetkilendirme ayarlarında kimliği doğrulanmamış isteklere izin vermeyi ve ardından özelliğini kullanarak kimlik doğrulamasını denetlemeyi table.access seçin.

Ayrıca, yalnızca yerel olarak geliştirme için Swagger desteği istiyorsanız azureMobile.js dosyanıza Swagger seçeneğini de ekleyebilirsiniz.

Anında iletme bildirimleri

Mobile Apps Azure Notification Hubs ile tümleştirildiğinden, tüm büyük platformlarda milyonlarca cihaza hedeflenen anında iletme bildirimleri gönderebilirsiniz. Notification Hubs'ı kullanarak iOS, Android ve Windows cihazlara anında iletme bildirimleri gönderebilirsiniz. Notification Hubs ile yapabileceğiniz her şey hakkında daha fazla bilgi edinmek için bkz. Notification Hubs'a genel bakış.

Anında iletme bildirimleri gönderme

Aşağıdaki kod, push kayıtlı iOS cihazlara yayın anında iletme bildirimi göndermek için nesnesinin nasıl kullanılacağını gösterir:

// Create an APNS payload.
var payload = '{"aps": {"alert": "This is an APNS payload."}}';

// Only do the push if configured.
if (context.push) {
    // Send a push notification by using APNS.
    context.push.apns.send(null, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

İstemciden bir şablon anında iletme kaydı oluşturarak, bunun yerine desteklenen tüm platformlardaki cihazlara bir şablon anında iletme iletisi gönderebilirsiniz. Aşağıdaki kodda şablon bildirimi gönderme adımları gösterilmektedir:

// Define the template payload.
var payload = '{"messageParam": "This is a template payload."}';

// Only do the push if configured.
if (context.push) {
    // Send a template notification.
    context.push.send(null, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

Etiketleri kullanarak kimliği doğrulanmış bir kullanıcıya anında iletme bildirimleri gönderme

Kimliği doğrulanmış bir kullanıcı anında iletme bildirimlerine kaydolduğunda, kayda otomatik olarak bir kullanıcı kimliği etiketi eklenir. Bu etiketi kullanarak, belirli bir kullanıcı tarafından kaydedilen tüm cihazlara anında iletme bildirimleri gönderebilirsiniz. Aşağıdaki kod, istekte bulunan kullanıcının SID'sini alır ve bu kullanıcı için her cihaz kaydına bir şablon anında iletme bildirimi gönderir:

// Only do the push if configured.
if (context.push) {
    // Send a notification to the current user.
    context.push.send(context.user.id, payload, function (error) {
        if (error) {
            // Do something or log the error.
        }
    });
}

Kimliği doğrulanmış bir istemciden anında iletme bildirimlerine kaydolduğunuz sırada, kayıt denemeden önce kimlik doğrulamasının tamamlandığından emin olun.

Özel API’ler

Özel API tanımlama

Uç nokta üzerinden Veri Erişim API'sine /tables ek olarak, Mobile Apps özel API kapsamı sağlayabilir. Özel API'ler tablo tanımlarına benzer şekilde tanımlanır ve kimlik doğrulaması dahil olmak üzere tüm aynı tesislere erişebilir.

App Service Kimlik Doğrulamasını özel bir API ile kullanmak istiyorsanız, önce Azure portal App Service Kimlik Doğrulamasını yapılandırmanız gerekir. Daha fazla bilgi için, kullanmayı planladığınız kimlik sağlayıcısının yapılandırma kılavuzuna bakın:

Özel API'ler, Tablolar API'sine çok benzer şekilde tanımlanır:

  1. Bir api dizin oluşturun.
  2. Dizininde api bir API tanımı JavaScript dosyası oluşturun.
  3. Dizini içeri aktarmak için import api yöntemini kullanın.

Aşağıda daha önce kullandığımız temel uygulama örneğini temel alan prototip API tanımı verilmiştir:

var express = require('express'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Import the custom API.
mobile.api.import('./api');

// Add the Mobile API so it is accessible as a Web API.
app.use(mobile);

// Start listening on HTTP
app.listen(process.env.PORT || 3000);

yöntemini kullanarak Date.now() sunucu tarihini döndüren örnek bir API alalım. api/date.js dosyası aşağıda verilmiştir:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    });
};

module.exports = api;

Her parametre standart RESTful fiillerinden biridir: GET, POST, PATCH veya DELETE. yöntemi, gerekli çıkışı gönderen standart bir ExpressJS ara yazılım işlevidir.

Özel API'ye erişim için kimlik doğrulaması iste

Mobile Apps SDK'sı, kimlik doğrulamasını hem uç nokta hem de tables özel API'ler için aynı şekilde uygular. Önceki bölümde geliştirilen API'ye kimlik doğrulaması eklemek için bir access özellik ekleyin:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    });
};
// All methods must be authenticated.
api.access = 'authenticated';

module.exports = api;

Ayrıca belirli işlemlerde kimlik doğrulaması da belirtebilirsiniz:

var api = {
    get: function (req, res, next) {
        var date = { currentTime: Date.now() };
        res.status(200).type('application/json').send(date);
    }
};
// The GET methods must be authenticated.
api.get.access = 'authenticated';

module.exports = api;

Uç nokta için tables kullanılan belirteç, kimlik doğrulaması gerektiren özel API'ler için kullanılmalıdır.

Büyük dosya yüklemelerini işleme

Mobile Apps SDK'sı, gönderiminizdeki gövde içeriğini kabul etmek ve kodunu çözmek için gövde ayrıştırıcı ara yazılımını kullanır. Daha büyük dosya yüklemelerini kabul etmek için body-parser'ı önceden yapılandırabilirsiniz:

var express = require('express'),
    bodyParser = require('body-parser'),
    azureMobileApps = require('azure-mobile-apps');

var app = express(),
    mobile = azureMobileApps();

// Set up large body content handling.
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

// Import the custom API.
mobile.api.import('./api');

// Add the Mobile API so it is accessible as a Web API.
app.use(mobile);

// Start listening on HTTP.
app.listen(process.env.PORT || 3000);

Dosya, iletim öncesinde base-64 kodlanmış. Bu kodlama, gerçek karşıya yükleme boyutunu (ve hesaba katmalısınız) artırır.

Özel SQL deyimlerini yürütme

Mobile Apps SDK'sı, istek nesnesi aracılığıyla bağlamın tamamına erişim sağlar. Parametreli SQL deyimlerini tanımlı veri sağlayıcısında kolayca yürütebilirsiniz:

var api = {
    get: function (request, response, next) {
        // Check for parameters. If not there, pass on to a later API call.
        if (typeof request.params.completed === 'undefined')
            return next();

        // Define the query. Anything that the mssql
        // driver can handle is allowed.
        var query = {
            sql: 'UPDATE TodoItem SET complete=@completed',
            parameters: [{
                completed: request.params.completed
            }]
        };

        // Execute the query. The context for Mobile Apps is available through
        // request.azureMobile. The data object contains the configured data provider.
        request.azureMobile.data.execute(query)
        .then(function (results) {
            response.json(results);
        });
    }
};

api.get.access = 'authenticated';
module.exports = api;

Hata Ayıklama

Mobile Apps'te hata ayıklama, tanılama ve sorun giderme

Azure App Service, Node.js uygulamaları için çeşitli hata ayıklama ve sorun giderme teknikleri sağlar. Node.js Mobile Apps arka ucunuzla ilgili sorunları gidermeye başlamak için aşağıdaki makalelere bakın:

Node.js uygulamaların çok çeşitli tanılama günlüğü araçlarına erişimi vardır. Mobile Apps Node.js SDK'sı dahili olarak tanılama günlüğü için Winston kullanır. Hata ayıklama modunu etkinleştirdiğinizde veya Azure portal uygulama ayarını true olarak ayarladığınızda MS_DebugMode günlük otomatik olarak etkinleştirilir. Oluşturulan günlükler Azure portal tanılama günlüklerinde görünür.