Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Bulut İşlevleri ile dinamik içerik sunun ve mikro hizmetlere ev sahipliği yapın

Dinamik içeriğinizi oluşturmak ve sunmak veya bulut hizmetleri olarak REST API'leri oluşturmak için Bulut İşlevlerini Firebase Hosting ile eşleştirin.

Firebase için Bulut İşlevleri , HTTPS isteklerine yanıt olarak arka uç kodunu otomatik olarak çalıştırmanızı sağlar. Kodunuz Google'ın bulutunda depolanır ve yönetilen bir ortamda çalışır. Kendi sunucularınızı yönetmeye ve ölçeklendirmeye gerek yoktur.

Örneğin, Firebase Hosting ile entegre Bulut İşlevleri için vakalar ve örnekler kullanın, sunucusuz genel bakış sayfamızı ziyaret edin.

Bulut İşlevlerini Firebase Hosting'e Bağlama

Bu bölüm, bir işlevi Firebase Hosting'e bağlamak için açıklayıcı bir örnek sağlar.

Dinamik içerik sunma performansını artırmak için önbellek ayarlarınızı isteğe bağlı olarak ayarlayabileceğinizi unutmayın.

1. Adım: Bulut İşlevlerini Ayarlama

  1. Şunlardan emin olun:

    CLI'yi yükleme ve Barındırma işlemini başlatma hakkında ayrıntılı talimatlar için Barındırma için Başlangıç ​​kılavuzuna bakın .

  2. Bulut İşlevlerini zaten ayarladıysanız, Adım 2: HTTP işlevi oluşturma bölümüne geçebilirsiniz.

  3. Zaten Bulut Fonksiyonlar ayarlanmamış ettiyseniz:

    1. Proje dizininizin kökünden aşağıdaki komutu çalıştırarak Bulut İşlevlerini başlatın:

      firebase init functions
    2. İstendiğinde JavaScript'i seçin (bu örnekte JS kullanılır).

    3. Yerel proje dizininizde bir functions dizininizin olduğundan emin olun. Bu functions dizini, Bulut İşlevleri kodunun yaşadığı yerdir.

2. Adım: Barındırma sitenize bir HTTP işlevi oluşturun

  1. Favori düzenleyicinizde /functions/index.js açın.

  2. Dosyanın içeriğini aşağıdaki kodla değiştirin.

    Bu kod, tıpkı bir saat gibi günün her saati için bir BONG ile HTTP isteklerine yanıt veren bir HTTP işlevi ( bigben adlı) oluşturur.

     const functions = require('firebase-functions');
    
    exports.bigben = functions.https.onRequest((req, res) => {
      const hours = (new Date().getHours() % 12) + 1  // London is UTC + 1hr;
      res.status(200).send(`<!doctype html>
        <head>
          <title>Time</title>
        </head>
        <body>
          ${'BONG '.repeat(hours)}
        </body>
      </html>`);
    });
     
  3. Proje dizininizin kökünden aşağıdaki komutu çalıştırarak bu işlevi sitenize dağıtın:

    firebase deploy

    İşlev artık URL'den erişilebilir
    https://us-central1- PROJECT_ID .cloudfunctions.net/bigben .

HTTP istekleri hakkında daha fazla bilgi edinmek için Bulut İşlevleri belgelerini ziyaret edin.

Bir sonraki adım, Firebase tarafından barındırılan siteniz için dinamik içerik oluşturabilmesi için bu HTTP işlevine bir Firebase Barındırma URL'sinden nasıl erişeceğinizi gösterir.

3. Adım: Barındırma isteklerini işlevinize yönlendirin

Yeniden yazma kurallarıyla , belirli kalıplarla eşleşen istekleri tek bir hedefe yönlendirebilirsiniz. Örneğin, Hosting sitenizdeki sayfa /bigben gelen tüm istekleri bigben işlevini yürütmek üzere yönlendirmek için.

  1. firebase.json dosyanızı açın.

  2. hosting bölümünün altına aşağıdaki rewrite yapılandırmasını ekleyin:

    "hosting": {
     // ...
    
     // Add the "rewrites" attribute within "hosting"
     "rewrites": [ {
       "source": "/bigben",
       "function": "bigben"
     } ]
    }
    
  3. firebase deploy komutunu yeniden çalıştırın.

    İşlevinize artık aşağıdaki URL'ler aracılığıyla erişilebilir:

    • Firebase alt alan adlarınız:
      PROJECT_ID .web.app/bigben ve PROJECT_ID .firebaseapp.com/bigben

    • Bağlı özel alanlar :
      CUSTOM_DOMAIN /bigben

Yeniden yazma kuralları hakkında daha fazla bilgi için Barındırma yapılandırması sayfasını ziyaret edin. Çeşitli Barındırma yapılandırmaları için yanıtların öncelik sırası hakkında da bilgi edinebilirsiniz.

Bir web çerçevesi kullanın

Uygulamanızın dinamik içeriğini sunmak ve karmaşık web uygulamalarını daha kolay yazmak için Bulut İşlevleri'nde Express.js gibi web çerçevelerini kullanabilirsiniz.

Aşağıdaki bölümde, Firebase Barındırma ve Bulut İşlevleri ile Express.js'yi kullanma konusunda açıklayıcı bir örnek verilmektedir.

  1. functions dizininizden aşağıdaki komutu çalıştırarak Express.js'yi yerel projenize yükleyin:

    npm install express --save
  2. /functions/index.js dosyanızı açın, ardından Express.js dosyasını içe aktarın ve /functions/index.js :

    const functions = require('firebase-functions');
    const express = require('express');
    const app = express();
    
  3. Aşağıdaki iki uç noktayı ekleyin:

    1. Adresindeki web dizinini hizmet etmek birinci uç noktasını ekleyin / .

       app.get('/', (req, res) => {
        const date = new Date();
        const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
        res.send(`
          <!doctype html>
          <head>
            <title>Time</title>
            <link rel="stylesheet" href="/style.css">
            <script src="/script.js"></script>
          </head>
          <body>
            <p>In London, the clock strikes:
              <span id="bongs">${'BONG '.repeat(hours)}</span></p>
            <button onClick="refresh(this)">Refresh</button>
          </body>
        </html>`);
      });
       
    2. BONG sayısını JSON biçiminde /api altında API olarak döndürmek için başka bir uç nokta:

       app.get('/api', (req, res) => {
        const date = new Date();
        const hours = (date.getHours() % 12) + 1;  // London is UTC + 1hr;
        res.json({bongs: 'BONG '.repeat(hours)});
      });
       
  4. Express.js uygulamasını bir HTTP işlevi olarak dışa aktarın:

    exports.app = functions.https.onRequest(app);
    
  5. firebase.json dosyanızda, tüm istekleri app işlevine yönlendirin. Bu yeniden yazma işlemi, Express.js uygulamasının yapılandırdığımız farklı alt yolu sunmasına izin verir (bu örnekte / ve /api ).

    {
     "hosting": {
       // ...
    
       // Add the "rewrites" attribute within "hosting"
       "rewrites": [ {
         "source": "**",
         "function": "app"
       } ]
     }
    }
    

Ara katman yazılımı ekle

Örneğimize devam ederseniz, artık Express.js kullandığınıza göre, Express.js ara katman yazılımını tipik bir şekilde ekleyebilirsiniz. Örneğin, uç noktalarımızda CORS isteklerini etkinleştirebilirsiniz.

  1. Aşağıdaki komutu çalıştırarak cors ara katman yazılımını yükleyin:

    npm install --save cors
  2. /functions/index.js dosyanızı açın, ardından Express.js uygulamanıza cors şekilde cors ekleyin:

    const cors = require('cors')({origin: true});
    app.use(cors);
    

Firebase'i Express uygulamalarıyla ve ara katman yazılımı modülleriyle kullanma hakkında daha fazla bilgi edinmek için Bulut İşlevleri belgelerini ziyaret edin.

Yerel olarak test et

Firebase CLI'sini kullanarak HTTP işlevlerinizi yerel olarak sunabilir ve çalıştırabilirsiniz. Bu, üretime başlamadan önce Firebase projenizi görüntülemenizi ve test etmenizi sağlar.

  1. Hem firebase-functions CLI'nın hem de firebase-functions SDK'sının en son sürümler olduğundan emin olun. Her ikisini de güncellemek için yerel projenizin functions dizininden aşağıdaki iki komutu çalıştırın:

    npm install -g firebase-tools
    npm install --save firebase-functions@latest
  2. Proje dizininizin kökünden aşağıdaki komutu çalıştırarak Firebase projenizi yerel olarak sunun.

    Bu komut, yerel olarak barındırılan URL'lerde barındırma ve işlevleri taklit eder.

    firebase serve
firebase serve Barındırma için dinamik içerik oluşturmak üzere Cloud Functions'ı kullanırken, firebase serve varsayılan olarak yerel HTTP işlevlerinizi barındırma proxy'si olarak kullanır. Firebase Barındırma ve Bulut İşlevleri için daha fazla yapılandırma seçeneği için Firebase CLI Başvurusu'na bakın .

Sonraki adımlar