Wrap AWS Lambda functions with Express-like functions to simplify your code
So instead of writing this:
exports.handler = (event, context, callback) => {
const requestBody = JSON.parse(event.body);
const responseBody = {
success: false,
data: requestBody.id
};
callback(null, {
statusCode: 201,
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(responseBody)
});
}you'll have this:
const { use } = require('lambda-expressless');
const bodyParser = require('body-parser');
exports.handler = use(bodyParser.json(), (req, res) => {
res.status(201).json({
success: false,
data: req.body.id
})
});You can also use multiple middlewares for a single handler:
const { use } = require('lambda-expressless');
const checkUser = (req, res, next) => {
if (req.get('Authorization') === 'someToken') {
next()
} else {
req.status(403).end('Forbidden');
}
};
const getUser = (req, res) => {
res.json({
id: '12',
name: 'Murat'
});
};
exports.handler = use(checkUser, getUser);You can use many popular Express Middlewares. Some examples are:
npm i lambda-expressless
This project aims to implement functionalities of ExpressJS middlewares as much as possible. Request and Response objects have properties and methods listed below.
Properties:
| Property | Notes |
|---|---|
| body | You need to use body-parser |
| hostname | - |
| host | - |
| xhr | - |
| ip | - |
| ips | - |
| path | - |
| protocol | - |
| secure | - |
| method | - |
| query | - |
| params | - |
| headers | - |
Methods:
| Method | Notes |
|---|---|
| accepts() | - |
| acceptsEncodings() | - |
| acceptsCharsets() | - |
| acceptsLanguages() | - |
| get() | - |
| header() | - |
| is() | - |
Methods:
| Method | Notes |
|---|---|
| get() | - |
| format() | Doesn't support shorthand mime-types |
| set() | Only supports key, value parameters |
| send() | Only supports string values |
| status() | - |
| end() | - |
| json() | - |
| type() | - |
Every contribution is very welcome. Keep these in your mind when you want to make a contribution:
- Because of we use semantic-release you need to use Angular Commit Message Conventions in your commit messages.
- Keep code coverage 100% with your updated tests.
- Check your changes with a Lambda environment. You can use SAM-CLI to test on your local.
- Don't forget to update documentation(this readme file) about your changes.