#firebase #google-cloud-functions #firebase-hosting
#firebase #google-cloud-функции #firebase-хостинг
Вопрос:
Я новичок в функциях firebase. Я пытаюсь перенаправить функции по новому URL-адресу вместо использования URL-адреса по умолчанию из функций firebase.
Мой firebase.json выглядит так. Есть ли способ улучшить «перезаписи»?
{
"functions": {
"predeploy": [
"npm --prefix "$RESOURCE_DIR" run lint"
],
"source": "functions"
},
"hosting": {
"cleanUrls": true,
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "/.well-known/acme-challenge/wVJAlodX0whlzQQxznOSngFXGWFOLtsjk2F9l7oQDXc",
"destination": "/firebaseHostingVerification"
},
{
"source": "api/v1/currencies",
"function": "currencies"
},
{
"source": "api/v1/stop",
"function": "stop"
},
{
"source": "api/v1/track",
"function": "track"
},
{
"source": "api/v1/bookmark",
"function": "bookmark"
},
{
"source": "api/v1/authenticate",
"function": "authenticate"
},
{
"source": "api/v1/add-token",
"function": "addUserToken"
},
{
"source": "api/v1/update-history",
"function": "updateHistory"
},
{
"source": "api/v1/update-rates",
"function": "updateLatestRatesWithCodes"
},
{
"source": "api/v1/createMoneyChanger",
"function": "createMoneyChanger"
},
{
"source": "api/v1/moneyChanger",
"function": "moneyChanger"
},
{
"source": "api/v1/updateRates",
"function": "updateRates"
}
//
{
"source": "**",
"destination": "/index.html"
}
]
},
"database": {
"rules": "database.rules.json"
},
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"storage": {
"rules": "storage.rules"
}
}
Могу ли я написать это таким образом, чтобы всякий раз, когда я добавляю новые функции, они всегда будут находиться под моим предопределенным URL / именем функции?
Ответ №1:
Если вы спрашиваете, возможно ли отказаться от необходимости повторно вводить «api / vi /», это не вариант. Правила перезаписи ограничены в этом отношении. Вам необходимо вызывать путь в URL-адресе для каждой перезаписи.
Можно использовать перезаписи для подстановки всего под путь к определенной функции, но затем в этой функции вам нужно будет посмотреть путь URL, чтобы выяснить, что конкретно вы хотите сделать с этим URL. Некоторые люди используют экспресс-приложение, чтобы помочь в этом. Если вы сделаете это, вам придется развернуть всю эту функцию / приложение, если вы хотите изменить хотя бы один из его параметров.
Комментарии:
1. Спасибо @Doug Strevenson. Есть ли лучший способ вызывать функции из веб-приложения? Если я не перенаправлю, веб-приложение не сможет вызывать функции, если я не разрешу CORS для всех функций.
2. Вам не нужно писать HTTP-триггеры. Вместо этого вы могли бы написать триггеры базы данных и вызвать их путем записи в базу данных.
3. Как записать триггеры базы данных? Я хотел иметь API, чтобы всеми платформами, использующими шрифты: iOS, Android и т. Д., Можно было управлять из одного места.
4. ОК. Я нашел это. firebase.google.com/docs/functions/database-events возможно ли иметь событие OnRead()?
5. Нет, это вообще не будет масштабироваться.