Як успішно створити API за допомогою Firebase?

Firebase: Потужна платформа для розробки веб- та мобільних додатків

Firebase, запущена в 2012 році, спочатку була задумана як проста база даних реального часу для мобільних програм. Згодом, придбана Google, вона еволюціонувала в комплексну платформу з багатьма сервісами. Google розгледів у ній великий потенціал і додав різноманітні інструменти.

Сьогодні Firebase – це BaaS (Backend as a Service), що включає в себе 18 різних сервісів, покликаних спростити процес розробки веб- і мобільних додатків. Серед численних компаній, які використовують Firebase BaaS, є такі відомі імена, як Accenture, Alibaba Travels, Stack, Twitch, Instacart та ще понад 2300 інших.

Ключові переваги використання Firebase

Однією з перших і найважливіших послуг, запропонованих Firebase, була база даних реального часу. Ця база даних, розміщена у хмарі, зберігає дані у форматі JSON і забезпечує їхню миттєву синхронізацію з усіма підключеними клієнтами. Незалежно від того, чи використовуються SDK для iOS, Android чи JavaScript, всі програми, підключені до бази даних Firebase Realtime, працюють з єдиною копією, яка постійно оновлюється.

Cloud Firestore – це ще одна важлива служба Firebase. Це NoSQL база даних, розроблена для зберігання, синхронізації та запитів даних у мобільних і веб-додатках в глобальному масштабі. Cloud Firestore дозволяє створювати ієрархії для зберігання пов’язаних даних та використовувати експресивні запити для їхнього отримання. Запити масштабуються на основі розміру результатів, а не набору даних, що забезпечує масштабованість програм з самого початку.

Крім баз даних, Firebase надає хостинг, сховище файлів, функції (подібно до AWS Lambda) та багато інших корисних сервісів.

Створення API за допомогою Firebase

API (Application Programming Interface) – це механізм надання послуг вашим власним або стороннім додаткам. Firebase дозволяє розробляти власні служби, які використовують сервіси Firebase, без необхідності налаштовувати серверний код. Наприклад, можна надати стороннім програмам доступ до бази даних Firebase Realtime для отримання даних, зібраних різними датчиками.

Перший крок у створенні 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 на локальному комп’ютері. Використовуйте npm для встановлення firebase-tools:

npm install -g firebase-tools

Потім увійдіть у firebase та ініціалізуйте проект за допомогою команд:

firebase login firebase init

Ви побачите привітання, де Firebase повідомить про папку для ініціалізації проекту, і з’явиться меню параметрів.

В меню виберіть “Функції та хостинг”. Хостинг надасть вам персоналізовану URL-адресу для вашого API. Потім оберіть свій проект Firebase і мову розробки (наприклад, JavaScript для веб-API).

Якщо ви використовуєте залежності пакетів, встановіть їх у папці функцій через npm. Почніть писати код функцій. Не забудьте імпортувати пакети `firebase-functions` і `firebase-admin`:

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

Для доступу до бази даних реального часу, необхідно вказати її URL-адресу під час ініціалізації SDK JavaScript. URL-адресу можна знайти в розділі Realtime Database у консолі 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 CLI покаже URL-адресу HTTP-кінцевих точок ваших функцій, які можна використовувати для виклику API з веб-додатку. URL-адреса містить ідентифікатор проекту та регіон для функції HTTP. Наприклад, наступний URL-адрес можна використати для виклику функції запиту елемента, передавши `itemid=1` як параметр:

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

Щоб виконати функцію, відкрийте URL-адресу з параметрами у браузері.

Для розгортання в робочому середовищі потрібна підписка на план Firebase Blaze, який є платним. Оплата відбувається наприкінці місяця, виходячи з використання.

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

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

Local Emulator Suite пропонує зручний інтерфейс для створення прототипів та тестування програм на локальній машині.

Використовуючи інтерфейс Emulator Suite, ви можете тестувати структуру бази даних, робочі процеси хмарних функцій, аналізувати продуктивність серверних служб і оцінювати зміни в правилах безпеки. Це захищене середовище для перевірки функціональності API перед відправкою в робоче середовище.

Для запуску емуляторів виконайте команду `firebase:start`. Для використання емулятора Firestore потрібна Java. Якщо Java не встановлена, завантажте її з цього посилання.

Після виклику емулятора Firestore, команда поверне URL-адресу для відкриття інтерфейсу Emulator Suite у браузері. За замовчуванням це `localhost:4000`, але може відрізнятися залежно від комп’ютера.

Також буде надана повна URL-адреса для вашої HTTP-функції. Вона виглядатиме приблизно так:

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

де `apiproject-8753c` – це назва вашого проекту, `itemQuery` – назва функції. Порт може відрізнятися на кожному комп’ютері.

Для тестування функції, скопіюйте URL-адресу, додавши потрібні параметри (наприклад, `?itemid=1`) та введіть її у браузері. Результати виконання API відобразяться в інтерфейсі Emulator Suite.

На вкладці “Журнали” ви побачите записи про виконання функції `itemQuery()`. Якщо функція створює нові дані у Firestore, їх можна переглянути на відповідній вкладці.

Розширення можливостей вашого API

Firebase допоможе зробити ваш API популярним. Він спрощує розробку програми, звільняючи вас від багатьох турбот з налаштування серверних служб, та сприяє її просуванню. Як це можливо? Програми, пов’язані з Firebase, займають вищі позиції в пошуковій видачі, ніж інші.

Особливо варто звернути увагу на API індексації програм Firebase. Він покращує позиції посилань на додаток і допомагає користувачам знаходити потрібний контент. Також, після кнопки домашньої сторінки вашої програми, з’явиться кнопка «Встановити», щоб зацікавлені користувачі могли легко стати користувачами вашого додатку.

Отже, Firebase не тільки надає серверні послуги, які значно прискорюють розробку вашого API, але й сприяє його просуванню і монетизації.