2017-10-20 2 views
2

Wie Pfade verarbeiten wie /user /: id und /user /: id/berichten in HTTP-Trigger Firebase Cloud-Funktionen mit Zugriff id param?Firebase Funktionen Cloud-Routing

Ich wusste nicht, wie nächste Lösung, weil alle meine Funktionen Teil des einen mit dem Präfix /api wäre:

const app = require('express')(); 
exports.api= functions.https.onRequest(app); 
app.get('/user/:uid/report', (req, res) => {}): 

Aber ich brauche etwas wie folgt aus:

exports['/user/:uid/report'] = functions.https.onRequest((req, res) => { 
    // ... 
}); 

Antwort

1

Sie können Ihr Hosting-Rewrite dazu verwenden, URLs auf Funktionen wie diese zu mappen

"rewrites": [ 
    { 
    "source": "/user/*/report", 
    "function": "myFunction" 
    } 
] 

Aber Sie müssen die URL selbst verarbeiten, um jeden Parameter zu extrahieren

+0

Ich glaube nicht, dass das funktionieren wird. –

+0

Meine Antwort funktioniert, Sie können Platzhalter in der URL haben, überprüfen Sie die Dokumentation https://firebase.google.com/docs/hosting/url-redirects-reedrites. –

+0

Entschuldigung für meine unhöfliche Antwort vor, nach der Dokumentation die URL sind glob notation, so dass Sie * darin hinzufügen können. Hier ist ein Beispiel meiner API implementiert in Firebase Cloud Funktionen https://jsfiddle.net/1x4crn9t/ –

2

Sie können Firebase-Hosting über Cloud-Funktionen für Firebase verwenden, URLs neu zu schreiben, um den Pfad zu entsprechen, den Sie möchten. Dies bedeutet, dass Sie wieder firebase init und Hosting hinzufügen müssen, wenn es nicht bereits ist.

In Ihrem Projekt firebase.json Sie eine function rewrite hinzufügen, um alle Anfragen zu schicken /** Hosting api funktionieren:

{ 
    "hosting": { 
    "rewrites": [ 
     { 
     "source": "/**", 
     "function": "api" 
     } 
    ] 
    } 
} 

Wenn Sie bereitstellen, werden Sie ein Hosting-URL in der Ausgabe gegeben werden. Verwenden Sie diese anstelle Ihrer Funktions-URL.

Und jetzt, mit Hosting vor Funktionen, müssen Sie caching einrichten.

+0

Ich denke nicht, dass dies eine gute Lösung ist, denn am Ende werde ich nur eine Funktion in der Cloud haben, um Timeout und Speicher zu konfigurieren , Recht? – iiylll

+0

Das ist richtig. Sie können jedoch keine Platzhalter beim Hosting von Umschreibungen verwenden. Daher können Sie einen Pfad mit wildem Pfad nicht in eine normale https-Funktion umleiten. Das ist alles was wir heute haben. Fühlen Sie sich frei, eine Feature-Anfrage einzureichen, die Ihre Situation beschreibt: https://firebase.google.com/support/contact/bugs-features/ –