March 10, 2017

Advaned URL Routing in Google Cloud Functions for Firebase

If you're as in love with Google Cloud Functions for Firebase as I am, you're likely a bit sad to hear that every HTTPS function ties to one specific URL.

For example, by default, a function named date ties to a location like...


This is fine for simple functions, but what if you want complete control over your URL routing?

Well we got you, fam. You can actually pass in a normal Express app to handle your function calls.

const functions = require('firebase-functions');
const app = require('express')();

app.get('/', (req, res) => {
  res.send(`Root page`);

app.get('/second', (req, res) => {
  res.send(`Sub function`);

app.get('/hello/:name', (req, res) => {
  res.send(`Hello ${}`);

// We name this function "route", which you can see is 
// still surfaced in the HTTP URLs below.
exports.route = functions.https.onRequest(app);

Now this "single function" can actually call many different paths.

# curl https://YOUR_FUNCTIONS_URL/route/
Root page

# curl https://YOUR_FUNCTIONS_URL/route/second
Sub function

# curl https://YOUR_FUNCTIONS_URL/route/hello/abe
Hello abe

And yes this works with middleware, too.

Awesome, right? Happy functioning!

Follow me on Twitter