Firebase хостинг собственного домена 404 при пересылке запросов в облачные функции - PullRequest
0 голосов
/ 11 января 2020

У меня настроен API-интерфейс в облачных функциях Google (https://us-central1-myproject-name.cloudfunctions.net/api/v1/123/456/ical.ics). Это хорошо работает, но я хочу установить «дружественное» доменное имя для API. :)

Согласно документации Googles это кажется простым, но я не могу понять, как сказать хостингу, чтобы он выполнял мою функцию API. При переходе на мое понятное имя (https://api.mydomain.com/api/v1/123/456/ical.ics) я получаю сообщение об ошибке 404.

Cannot GET /api/v1/123/456/ical.ics

Я проверил домен и обновил файл firebase. json с приведенным ниже кодом согласно к документации.

  {
    "source": "/api/**",
    "function": "api"
  }

Очень упрощенное представление моей функции

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

app.get('/v1/:catId/:userId/ical', async (req, res) => {
  ...
}

app.post('/v1/mail', async (req, res) => {
  ...
}

exports.api = functions.region('us-central1').https.onRequest(app)

Почему мой API не обслуживается доменами хостинга Firebase?

С уважением / К

Ответы [ 2 ]

2 голосов
/ 11 января 2020

Ваши Express маршруты должны точно соответствовать входящему URL, а не только подстановочному символу.

app.get('/api/v1/ical', async (req, res) => {
  ...
}

app.post('/app/v1/mail', async (req, res) => {
  ...
}

Я полагаю, вы также можете указать Express монтировать приложение по префиксу, чтобы применять один и тот же префикс ко всем маршрутам с помощью метода use () .

1 голос
/ 09 апреля 2020

Я не уверен, но использование примеров на странице Firebase сработало для меня после того, как я очистил ALL историю просмотров. Надеюсь, что это поможет любому, кто посмотрит на этот вопрос в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...