What is Serverless?
Serverless computing refers to a backend architecture in which you are not responsible for maintaining your own server to run server-side code.
Instead, you write functions, upload them to a Serverless computing service (ex. AWS Lambda), and the service will run the functions when called.
The service you are using (ex. AWS Lambda) takes care of all the infrastructure for you. So “Serverless” does not mean no servers are involved. Instead, it means you don’t have to deal with the headache of taking care of the server(s) yourself.
Netlify Lambda
Netlify Lambda is powered by AWS Lambda, but just much simpler.
We are going to be using Netlify Lambda to build a simple application.
Build a simple application
Note: must have Node.js Version 10 or later
1) Create a new React app
2) Install the Netlify CLI
You have 2 options for installing the CLI:
Option 1: Install it globally
npm install netlify-cli -g
Option 2: Install it as a dev dependency in project
npm install netlify-cli --save-dev
3) Create a functions folder and make a new .js file inside
This is where we store all of our Lambda functions
I will call my file sayHello.js
4) Inside the file, write this basic boilerplate
Each JavaScript file holds one Lambda function.
The function must export a handler method with the following general syntax:
exports.handler = async function(context, event) {
}
Netlify provides the event and context parameters when the Serverless function is called.
When you call the Serverless function endpoint, the handler receives an event object.
The context parameter includes info about the context in which the Serverless function was called.
Because async functions return a Promise, Netlify recommends returning a response with HTTP status code instead of allow function to time out
exports.handler = async function(context, event) {
return {
statusCode: 200,
message: JSON.stringify({msg: "Hello world"})
}
}
5) Create netlify.toml
file at the root level of the directory
This is a configuration file on how Netlify will build and deploy the site.
command: the command that starts the dev server
functions: where we store our Serverless functions
[build]
command = 'npm run build'
functions = 'functions'
publish = 'build'
6) Run the project
In the project directory, run the command netlify dev
. This starts a local dev server
If you append /.netlify/functions/sayHello
to the URL, the server will send the message defined earlier ({msg: “Hello world”})
The full URL:
localhost:4000/.netlify/functions/sayHello
7) Call function in frontend
This is an example of how you could access the data with axios. You would probably use React Hooks to asynchronously get the data and put it in a view.
const results = await axios.get('/.netlify/functions/sayHello')
As you can see, you use a local URL in the GET request