Как успешно создать API с помощью Firebase?

Firebase — это платформа для разработки приложений, запущенная в 2012 году и приобретенная Google двумя годами позже. Изначально Firebase задумывался просто как база данных для приложений реального времени, но Google увидел ее потенциал и решил добавить к ней дополнительные сервисы.

В настоящее время Firebase представляет собой систему BaaS (бэкэнд как услуга) с 18 сервисами для облегчения создания веб-приложений и мобильных приложений. Среди компаний, использующих услуги Firebase BaaS, Accenture, Alibaba Travels, Stack, Twitch и Instacart, а также более 2300 других.

Преимущества использования Firebase

Первой из услуг, предлагаемых Firebase, была база данных в реальном времени, и она остается одной из ее самых больших достопримечательностей. Базы данных Firebase Real-time размещаются в облаке, хранят данные в формате JSON и синхронизируются в режиме реального времени с каждым подключенным к ним клиентом. Независимо от того, используете ли вы iOS SDK, Android SDK или JavaScript SDK, все приложения, подключенные к базе данных Firebase Realtime, совместно используют один экземпляр базы данных, который всегда обновляется с учетом последних данных.

Cloud Firestore — еще один интересный сервис Firebase. Это база данных документов NoSQL, предназначенная для облегчения хранения, синхронизации и запросов данных для мобильных и веб-приложений в глобальном масштабе. Создание иерархий для хранения связанных данных и выразительных запросов для извлечения данных позволяет реализовать весь потенциал Cloud Firestore. В свою очередь, запросы масштабируются на основе размера результатов, а не размера набора данных. Это позволяет масштабировать приложения с самого начала, не дожидаясь момента, когда потребности превысят возможности.

В дополнение к вышеупомянутым службам баз данных Firebase также предлагает услуги хостинга, хранилища файлов, функции (в стиле AWS Lambda) и многое другое.

Создание API

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

Первым шагом в создании API в Firebase является доступ к Консоль Firebase и добавьте проект, нажав «Добавить проект» и присвоив новому проекту имя. Google предоставит вам возможность включить Google Analytics для вашего нового проекта. Рекомендуется принять эту рекомендацию, так как вы получите такие преимущества, как A/B-тестирование и разнообразные статистические отчеты из вашего API.

После создания проекта вы сможете выбрать сервисы Firebase, которые будет использовать ваш API. Чтобы проиллюстрировать эту задачу, мы увидим, как использовать службу базы данных Firebase Realtime.

Настройка базы данных реального времени в Firebase

На панели навигации слева в разделе «Разработка» нажмите «База данных в реальном времени». Справа появится кнопка «Создать базу данных». Нажмите на нее, чтобы создать свою первую базу данных в Firebase.

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

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

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

Как только вы закончите настройку своей базы данных, соответствующий API также будет включен в разделе «API и службы» вашей личной консоли в Google Cloud Platform.

Программирование Firebase API

На данный момент у вас уже есть основные элементы вашего проекта, настроенные в консоли Firebase. Следующим шагом будет написание вашего кода API. Для этого вам нужно будет инициализировать хостинг и функции Firebase на локальном компьютере. Вы можете установить firebase-tools с помощью npm:

npm install -g firebase-tools

Затем вы можете войти в firebase и инициализировать свой проект с помощью следующих команд:

firebase login firebase init

Появится экран приветствия, в котором Firebase сообщит вам о папке, в которой будет инициализирован ваш проект, и появится меню параметров.

В этом меню выберите «Функции и хостинг» (опция «Хостинг» позволит вам иметь собственный URL-адрес для разрабатываемого вами API). Затем выберите из списка приложение Firebase, которое вы создали ранее, после чего вы должны выбрать язык для использования. Для разработки веб-API вы можете выбрать JavaScript.

Если вы будете использовать зависимости пакетов, установите их с помощью npm внутри папки functions. Затем вы можете начать писать код для своих функций. Не забудьте включить пакеты firebase-functions и firebase-admin вместе с любыми другими необходимыми пакетами:

import * as functions from 'firebase-functions'; 
import * as admin from 'firebase-admin';

Чтобы использовать базу данных в реальном времени, необходимо указать ее URL-адрес при инициализации пакета SDK для JavaScript. URL-адрес находится в разделе «База данных реального времени» консоли Firebase. Вы можете узнать его по формату:

https://<database-name>.<region>.firebasedatabase.app

Вы можете использовать следующий фрагмент для инициализации SDK, заменив данные, соответствующие объекту конфигурации вашего проекта:

var config = {
  apiKey: "apiKey",
  authDomain: "projectId.firebaseapp.com",
  databaseURL: "https://databaseName.firebaseio.com",
  storageBucket: "bucket.appspot.com"
};
firebase.initializeApp(config);
var database = firebase.database();

После того как вы написали код своей API-функции, пришло время развертывания. Но перед этим вам придется внести некоторые изменения в firebase.json, добавив следующие строки, измененные в соответствии с конфигурацией вашего проекта:

"rewrites": [
     {
       "source": "/api/v1/**",
       "function": "webApi"
     }
]

Следующий шаг — развертывание. В первый раз необходимо сделать полное развертывание, выполнив команду:

firebase deploy

При последующих развертываниях вы сможете развертывать только функции, используя параметр –only functions.

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

https://us-central1-apiproject-8753c.cloudfunctions.net/itemQuery?itemid=1

Для выполнения функции откройте URL с соответствующими параметрами в браузере.

Обратите внимание, что для развертывания в производственной среде требуется подписка на план Firebase Blaze с оплатой по мере использования, как вы можете прочитать на странице цен Firebase. Это услуга постбиллинга, что означает, что вам выставляется счет за использование в конце каждого месяца.

Если у вас нет подписки Blaze, команда развертывания не будет отображать URL-адрес вашего API. Вместо этого вы увидите сообщение о том, что вы должны подписаться на план Blaze, если хотите выполнить развертывание в среде выполнения. В этом случае вы по-прежнему можете использовать Firebase Local Emulation Suite для создания и тестирования приложений на вашем локальном компьютере вместо их развертывания в производственной среде Firebase. Локальное тестирование полезно, чтобы избежать ненужных затрат во время разработки приложения, так как каждый тестовый запуск может привести к списанию средств с вашей учетной записи.

Локальное тестирование и прототипирование

Инструмент Local Emulator Suite предлагает интегрированный пользовательский интерфейс, который упрощает создание прототипов и делает их полезными для тестирования ваших приложений на локальном компьютере.

С помощью пользовательского интерфейса Emulator Suite вы можете тестировать проекты баз данных, рабочие процессы Cloud Functions, анализировать производительность серверных служб и оценивать изменения в правилах безопасности, а также выполнять другие задачи. По сути, это безопасная песочница для тестирования функциональности API перед его отправкой в ​​производственную среду.

Чтобы эмулировать свои функции или протестировать приложение локально, запустите эмуляторы firebase:start. У вас должна быть установлена ​​Java, чтобы иметь возможность использовать Firestore Emulator. Если у вас его нет, вы можете установить его из здесь.

Когда вы вызываете Firestore Emulator, команда возвращает URL-адрес, который позволит вам открыть пользовательский интерфейс Emulator Suite в вашем браузере. По умолчанию этот URL-адрес будет localhost:4000, но он может различаться на каждой машине.

Вы также получите полный URL-адрес для своей функции HTTP. Этот URL-адрес будет выглядеть примерно так:

http://localhost:5001/apiproject-8753c/us-central1/itemQuery

только у него будет имя вашего проекта, имя вашей функции, а также может быть другой номер порта на вашем локальном компьютере.

Чтобы протестировать функцию, скопируйте URL-адрес, возвращаемый эмулятором, добавив необходимые параметры (например, ?itemid=1) и введите его в новой вкладке браузера. Результаты выполнения API появятся в пользовательском интерфейсе Emulator Suite.

На вкладке «Журналы» вы увидите новые журналы, указывающие на выполнение функции itemQuery(). Если ваша функция генерирует новые данные в базе данных Firestore, вы увидите их на вкладке Firestore.

Получите больше информации о вашем API

Если вы хотите, чтобы разрабатываемые вами API стали популярными, Firebase тоже может вам в этом помочь. Не только потому, что это позволяет вам быстрее создавать приложения, избавляя вас от необходимости запускать и запускать серверные службы, но и потому, что помогает вам позиционировать ваш продукт. Как это возможно? Просто потому, что приложения, связанные с Firebase, занимают более высокие позиции в поисковой выдаче, чем другие приложения.

Кроме того, примите во внимание API индексации приложений Firebase. Этот инструмент улучшает поисковый рейтинг ссылок на приложения и помогает пользователям находить нужный контент. Он также размещает кнопку «Установить» после кнопки домашней страницы вашего приложения, чтобы заинтересованные пользователи могли всего одним щелчком мыши стать пользователями вашего приложения.

В заключение, Firebase не только предлагает вам серверные службы, которые значительно ускоряют разработку вашего API, но и после того, как он запущен и представлен миру, он также помогает вам продвигать его и зарабатывать на этом деньги.