https://github.com/swhite24/serverless-lambda-router
Lambda router for serverless framework
https://github.com/swhite24/serverless-lambda-router
lambda nodejs serverless serverless-framework
Last synced: 3 months ago
JSON representation
Lambda router for serverless framework
- Host: GitHub
- URL: https://github.com/swhite24/serverless-lambda-router
- Owner: swhite24
- License: mit
- Created: 2017-04-03T04:28:58.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-05-01T22:50:58.000Z (almost 8 years ago)
- Last Synced: 2025-08-09T15:51:40.951Z (8 months ago)
- Topics: lambda, nodejs, serverless, serverless-framework
- Language: JavaScript
- Size: 32.2 KB
- Stars: 6
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# serverless-lambda-router
[](https://travis-ci.org/swhite24/serverless-lambda-router)
serverless-lambda-router is a router framework to be used within a single [lambda](https://aws.amazon.com/lambda/) function supporting an [API Gateway](https://aws.amazon.com/api-gateway/) stage. Note that this library requires a lambda runtime of `6.10`.
serverless-lambda-router operates around promises, so use of async / await with babel is encouraged. To deliver a response, resolve the handler with the payload. To deliver an error, throw the [Boom](https://github.com/hapijs/boom) error.
Originally developed for use with [the serverless framework](https://serverless.com/).
## Installation
```
npm install --save serverless-lambda-router
```
## Usage
```javascript
const Boom = require('boom');
const LambdaRouter = require('serverless-lambda-router');
// Create a router instance
const router = new LambdaRouter({
// Headers to be attached to response payload
headers: {
'Cache-Control': 'max-age=0, private, no-cache, no-store'
},
// Function to be notified before route invoke
onInvoke: event => {},
// Function to be notified when route throws
onError: (err, event) => {}
});
// Register handlers
router.get('/foo', async (event, context) => {
// To deliver a response, return a Promise and resolve with your
// intended payload. If using async / wait, you can simply return the payload.
return {
foo: 'bar'
};
});
router.get('/bar', async (event, context) => {
// To deliver a response, return a Promise and throw an error.
// If using async / wait, you can simply throw the error.
throw Boom.notFound('Resource not found');
});
// Multiple handlers can be registered for a given route.
// Handlers may communicate via `context.state`, and the result of the final
// handler determines the response.
router.get('/baz', async (event, context) => {
context.state.name = 'John Smith';
}, async (event, context) => {
return {
name: context.state.name
};
});
// Export the handler
exports.handler = router.handler();
```