Abstraction for Serverless API
This project abstracts the creation of a basic API and the most commonly desired features.
Provides support for:
Install
$ npm install --save lambda-serverless-api
Getting Started
First we need to wrap our lambda endpoint. Inside the lambda function we can then use ApiError
and JsonResponse
as following:
const api = require("lambda-serverless-api")({
limiter: {},
rollbar: {}
});
module.exports = api.wrap(process.env.RATE_LIMIT_PER_IP, () => {
if (new Date().getHours() === 4) {
throw new api.ApiError("I am a teapot", 418);
}
return new api.JsonResponse({ message: "What's up?" });
});
where RATE_LIMIT_PER_IP
allows to set different limits per endpoint. Rate limiting is explained below.
If you want to send plain text instead of json, you can use ApiResponse
.
Rate Limiting
Rate limiting uses lambda-rate-limiter. Note that there are some serious restrictions because it does not use centralized storage!
To customize rate limiting, the package options are passed as limiter
into the constructor.
Logging Api Errors / Exceptions
To monitor api errors and exceptions lambda-rollbar can be enabled. Options are passed by putting them as rollbar
into the constructor.