How to Express.js with Cloud Functions for Firebase

ExpressJS is a minimal, light web framework for building APIs along with HTTP routes, payloads, and sessions on Node.js. Uniting this library with Cloud Functions you can deploy a serverless web server in most flying.

Using ExpressJS with Function As Service(Faas)?

Balancing web servers is quite difficult due to the fluctuation of the traffic as users come and go during the day and a product’s endurance. Load Balancers help, but maximizing throughput, minimizing response time, and bypassing system overloads is still complex, even when using the right tools.

Functions as a Service (FAAS), similar to Google Cloud Functions, are small containers that automatically scale up and down with requests, making them great for hosting a web API with little hassle. However, this technology also is also cost-effective as you only pay when a request is being fulfilled.

ExpressJS & Cloud Function Features

HyperText Trasport Protocol Activated Cloud Functions are designed to use the same APIs as the popular & most popular web frameworks for the language that supports them. For example, Python HTTP Cloud Functions have Request and Response objects compatible with the Flask web framework. Similarly, Node.js Cloud Functions use the Express.js API. As per the Firebase documentation:

Use google firebase functions.https to create a function that handles HTTP events. This event handler for an HTTP function listens for the onRequest() event, which is supported by routers and apps managed by the ExpressJS web framework. Additionally, the request is automatically parsed with Express Body Parser. See below there are some examples using ExpressJS with Cloud Functions integrated with Firebase:

 

How to Use Middleware in ExpressJS

One of the commonly utilized ExpressJS middleware is cors. A small package that enables Cross-Origin Resource Sharing(CORS) with multiple options. This code for adding middleware is the same here as in any other code environment. The corsServer in server.js shows configuring cors for an individual endpoint.

Caveats Trailing (/) Slash in ExpressJS

In ExpressJS you’ll need to add a trailing / to the URL as Express requires. Illustrated below:

uk-central1-<your-project-name>.cloud-functions.net/api

uk-central1-<your-project-name>.cloud-functions.net/api/

Keep in mind that if you do not add the slash symbol, you’ll get a 500 error: ERROR SHOWS: could not handle the request

As seen in cleanPathServer in functions.js you can skip passing the whole ExpressJS app through to these Cloud Functions and instead append the required (/) to the request URL before passing to our ExpressJS app.

ExpressJS Body Parser

Considering all requests are automatically parsed using Body Parser before they reach our code there is no way of defining the parser options. This also makes defining the parser in your own code superfluous. Cloud Functions uses the request’s content-type to determine which Body Parser options to use. However, if you can set the content type, then you have control over this.

Leave a Reply

Your email address will not be published. Required fields are marked *