Готово, готово, огонь!
Привет, Том пишет! Если вы заядлый пользователь Firebase, вы знаете, насколько простым может быть управление вашим сервером без серверной части. Благодаря функциям Firebase я просто пишу свою бизнес-логику как простую функцию, развертываю эту функцию через интерфейс командной строки и могу получить доступ к ней из облака в любой точке планеты. Сама настройка настолько проста, что само развертывание занимает максимум пару минут. Но есть особый случай с функциями Firebase, который может потребовать дополнительной работы - с использованием личного домена, а не того, который предоставляется Firebase.
Соревнование
Если вы просто развернете функции Firebase, как описано, вы получите хост в субдомене от Google, в частности, в
cloudfunctions.net
Для простых случаев использования это в основном то, что вам нужно - просто разверните вещь и сделайте ее доступной для использования. Но другие варианты использования требуют, чтобы ваш бэкэнд был доступен в вашем домене. В этом примере я буду использовать свой собственный домен flaming.codes.
Установка
Вот предварительные условия, чтобы убедиться:
- вы настроили проект Firebase
- в разделе «Хостинг» вы настроили свой персональный домен; это простой процесс, где вам просто нужно сохранить TXT-запись у вашего хостинг-провайдера.
Конфигурация
Чтобы ваш личный домен работал не только с вашим размещенным веб-приложением, но и с вашими функциями, необходимо обновить firebase.json (объяснение после примера):
{
"functions": {
...
},
"hosting": {
...,
"rewrites": [
{
"source": "/api/**",
"function": "api"
},
{
"source": "!/api/**",
"destination": "/index.html"
}
]
},
...
}
Единственный способ заставить его работать - это обновить ключ хостинга, а не функции, в вашем firebase.json. По сути, мы сообщаем Firebase, что из нашего размещенного веб-приложения все вызовы / api / ... должны быть перенаправлены на функцию с именем api. Больше всего у меня ушло на второй пункт, где я явно должен объявить любой другой маршрут, кроме api, который будет обрабатываться как маршрут веб-приложения по умолчанию.
Используя следующую настройку, старая облачная функция
https://uscentral1-flaming-codes.cloudfunctions.net/api
поэтому становится
https: //flaming.codes/api / ...
Обратите внимание, что здесь важен порядок, правила перезаписи обрабатываются от первого до последнего элемента, поэтому в этом случае визуально сверху вниз. Использование подстановочного знака для переназначения всех ваших функций действительно не рекомендуется для общего использования, так как это может нарушить работу вашего веб-приложения.
Заворачивать
И да, это действительно не волшебство, но может очень помочь при использовании функций Firebase в определенных случаях использования. Мы видели, как переписать ваши облачные функции как часть уже зарегистрированного домена, тем самым устраняя необходимость в новом настраиваемом поддомене - хотя это тоже возможно, но выходит за рамки этого руководства.
- Tom