I have an express.js based cloud functions app on firebase in a function named api
. To use a custom domain, I\'m trying to use Firebase Hosting rewrites to rout
You can use a single Firebase hosting rewrite rule with a complementing rewrite middleware in Express.
Add a rewrite in your firebase.json
file.
{
"source": "/api/**",
"function": "api"
}
Include an app.use() middleware to rewrite the request url.
const functions = require('firebase-functions');
const express = require('express');
const API_PREFIX = 'api';
const app = express();
// Rewrite Firebase hosting requests: /api/:path => /:path
app.use((req, res, next) => {
if (req.url.indexOf(`/${API_PREFIX}/`) === 0) {
req.url = req.url.substring(API_PREFIX.length + 1);
}
next();
});
app.get('/users/:userId/:userData/json', (req, res) => {
// Do App stuff here
});
exports[API_PREFIX] = functions.https.onRequest(app);