Google стремится к продвижению расового равенства для чернокожего населения. Смотри как.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Подавать с динамическим содержимым и хост microservices с облачными функциями

Пара Облако функции с Firebase хостинга для создания и обслуживания динамического содержимого или сборки REST API-интерфейсы, как microservices.

Облако Функции Firebase позволяет автоматически запускать бэкэнд код в ответ на HTTPS запросы. Ваш код хранится в облаке и работает Google в управляемой среде. Там нет необходимости управлять и масштабировать свои собственные серверы.

Например прецеденты и образцы для облачных функций , интегрированных с Firebase хостинга, посетите наш обзор бессерверного .

Connect Cloud Функции в Firebase хостинг

В этом разделе приводится пример проходных для подключения функции к Firebase хостинг.

Обратите внимание , что для повышения эффективности обслуживания контента динамического, вы можете дополнительно настраивать свои параметры кэша .

Шаг 1: Настройка функции Облачные

  1. Удостоверься что:

    Подробные инструкции по установке CLI и инициализации хостинга см Get Started руководства для хостинга .

  2. Если вы уже создали облако функций, вы можете перейти к Шагу 2: Создание функции HTTP .

  3. Если вы еще не создали облачные функции:

    1. Initialize Облако функции, выполнив следующую команду из корневой директории вашего проекта:

      firebase init functions
    2. При появлении запроса выберите JavaScript (это проходные примера использование JS).

    3. Убедитесь , что у вас есть functions каталога в локальном каталоге проекта. Это functions каталог, где код для облачных функций жизни.

Шаг 2: Создание функции HTTP на ваш хостинг сайта

  1. Open /functions/index.js в вашем любимом редакторе.

  2. Замените содержимое файла следующим кодом.

    Этот код создает функцию HTTP ( с именем bigben ) , что ответы на HTTP - запросы с BONG для каждого часа дня, так же , как часы.

     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. Развертывание этой функции на ваш сайт, выполнив команду следующей из корня каталога проекта:

    firebase deploy

    Функция теперь достижимы в URL
    https://us-central1- PROJECT_ID .cloudfunctions.net/bigben .

Посетите Функции документации Cloud , чтобы узнать больше о HTTP запросов.

Следующим шагом вы узнаете, как получить доступ к этой функции HTTP от хостинга URL Firebase так , что он может генерировать динамический контент для вашего Firebase-размещение сайта.

Шаг 3: Прямые запросы к хостингу вашей функции

С переопределением правилами , вы можете направлять запросы , которые соответствуют определенным шаблонам к одному месту назначения. Например, чтобы направлять все запросы со страницы /bigben на ваш хостинг сайта , чтобы выполнить bigben функции.

  1. Откройте firebase.json файл .

  2. Добавьте следующие rewrite конфигурации под hosting раздела:

    "hosting": {
     // ...
    
     // Add the "rewrites" attribute within "hosting"
     "rewrites": [ {
       "source": "/bigben",
       "function": "bigben"
     } ]
    }
    
  3. Запустите firebase deploy команду еще раз.

    Ваша функция теперь доступна через следующие URL-адреса:

Посетите хостинг страницу конфигурации для получения более подробной информации о перезаписи правил . Вы также можете узнать о приоритетном порядке ответов на различные хостинг конфигураций.

Использование веб-фреймворк

Вы можете использовать веб - рамку, как Express.js , в облачных функциях , чтобы служить содержание динамического вашего приложения и писать сложные веб - приложения более легко.

В следующем разделе приводится проходным примером использования Express.js с Firebase хостинга и облачные функций.

  1. Установите Express.js в локальном проекте, выполнив следующую команду из вашей functions каталога:

    npm install express --save
  2. Откройте /functions/index.js файл, а затем импортировать и инициализировать Express.js:

    const functions = require('firebase-functions');
    const express = require('express');
    const app = express();
    
  3. Добавьте следующие две конечные точки:

    1. Добавьте первый конечный служить индекс нашего веб - сайта / .

       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 отсчет как API, в формате JSON, под /api :

       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 как функции HTTP:

    exports.app = functions.https.onRequest(app);
    
  5. В вашем firebase.json файл, направлять все запросы на app функции. Это позволяет переписывают Express.js служить различные подпуть , что мы сконфигурированный (в данном примере, / и /api ).

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

Добавить промежуточный слой

Продолжая наш пример, теперь, когда вы используете Express.js, вы можете добавить Express.js промежуточное программное обеспечение в обычном пути. Например, вы можете включить CORS запросы на наших конечных точках.

  1. Установите на cors промежуточный, выполнив следующую команду:

    npm install --save cors
  2. Откройте /functions/index.js файл, а затем добавить cors в приложение Express.js, например , так:

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

Посетите Functions документацию Облака более узнать об использовании Firebase с приложениями Express , а также связующим модулей.

Тест локально

Вы можете служить и запускать функции HTTP локально с помощью Firebase CLI. Это позволяет просматривать и тестировать Firebase проект перед развертыванием производства.

  1. Убедитесь , что оба Firebase CLI и firebase-functions SDK являются последние версии доступны. Для обновления и выполните следующие две команды из functions директории вашего локального проекта:

    npm install -g firebase-tools
    npm install --save firebase-functions@latest
  2. Подавать ваш проект Firebase локально, выполнив следующую команду из корневой директории вашего проекта.

    Эта команда эмулирует хостинг и функцию локально размещенной URL.

    firebase serve
Когда вы используете облачные функции для создания динамического контента для Firebase хостинга, firebase serve , по умолчанию, использует локальные функции HTTP в качестве прокси для хостинга. Дополнительные опции конфигурации для Firebase хостинга и облачных функций, обратитесь к Firebase CLI Reference .

Следующие шаги