Firebase Functions-Domain

So verwenden Sie eine benutzerdefinierte Domain für Firebase Functions

Bereit, Set, Feuer!

Hallo, Tom schreibt hier! Wenn Sie ein begeisterter Benutzer von Firebase sind, wissen Sie, wie einfach die Handhabung Ihres Back-Ends ohne Back-End sein kann. Dank Firebase Functions schreibe ich meine Geschäftslogik einfach als einfache Funktion, stelle genau diese Funktion über die CLI bereit und kann sie aus der Cloud überall auf der Welt erreichen. Die Einrichtung selbst ist so einfach, dass die Bereitstellung allein höchstens ein paar Minuten dauert. Es gibt jedoch einen Sonderfall bei Firebase Functions, der möglicherweise etwas mehr Arbeit erfordert – die Verwendung einer benutzerdefinierten Domäne und nicht der von Firebase bereitgestellten.

Die Herausforderung

Wenn Sie Firebase Functions nur wie beschrieben bereitstellen, erhalten Sie den Host unter einer Subdomain von Google, insbesondere unter

cloudfunktionen.net

Für einfache Anwendungsfälle ist dies meistens das, was Sie brauchen - stellen Sie das Ding einfach bereit und stellen Sie es zur Nutzung bereit. Andere Anwendungsfälle erfordern jedoch, dass Ihr Back-End unter Ihrer Domain erreichbar ist. Für dieses Beispiel verwende ich meine eigene Domain flaming.codes.

Die Einrichtung

Hier sind die Voraussetzungen, nur um sicherzugehen:

  • Sie haben ein Firebase-Projekt eingerichtet
  • unter Hosting haben Sie Ihre benutzerdefinierte Domain eingerichtet; Dies ist ein einfacher Vorgang, bei dem Sie nur einen TXT-Eintrag bei Ihrem Hosting-Provider speichern müssen

Die Konfiguration

Damit Ihre benutzerdefinierte Domain nicht nur für Ihre gehostete Web-App, sondern auch für Ihre Funktionen funktioniert, muss firebase.json aktualisiert werden (Erklärung nach dem Beispiel):

{
  "functions": {
    ...
  },
  "hosting": {
    ...,
    "rewrites": [
      {
        "source": "/api/**",
        "function": "api"
      },
      {
        "source": "!/api/**",
        "destination": "/index.html"
      }
    ]
  },
  ...
}

Der einzige Trick, damit es funktioniert, besteht darin, den Hosting-Schlüssel und nicht die Funktionen in Ihrer firebase.json zu aktualisieren. Im Grunde teilen wir Firebase mit, dass alle Aufrufe von /api/... von unserer gehosteten Web-App an die Funktion namens api umgeleitet werden sollen. Was mich am längsten gebraucht hat, war der zweite Punkt, bei dem ich jede andere Route als API explizit als Standard-Web-App-Route deklarieren muss.

Mit dem folgenden Setup wird die alte Cloud-Funktion

https://uscentral1-flaming-codes.cloudfunctions.net/api

daher wird

https://flaming.codes/api/...

Beachten Sie, dass hier die Reihenfolge wichtig ist, die Rewrite-Regeln werden vom ersten bis zum letzten Element verarbeitet, also in diesem Fall von oben nach unten, visuell gesprochen. Die Verwendung eines Platzhalters, um alle Ihre Funktionen neu zuzuordnen, wird für die allgemeine Verwendung wirklich nicht empfohlen, da dies Ihre Web-App beschädigen würde.

Einpacken

Und ja, es ist wirklich keine Magie, kann aber bei der Verwendung von Firebase Functions in bestimmten Anwendungsfällen sehr hilfreich sein. Wir haben gesehen, wie Sie Ihre Cloud-Funktionen als Teil der bereits registrierten Domäne neu schreiben und somit die Notwendigkeit einer neuen, benutzerdefinierten Unterdomäne eliminieren - obwohl dies auch möglich ist, aber für dieses Tutorial nicht vorgesehen ist.

  • Tom