aws-lambda-middleware
v1.1.2
Published
AWS Lambda Middleware
Downloads
75
Maintainers
Readme
aws-lambda-middleware
AWS Lambda Middleware
You can simply apply Middleware in Lambda.
Clean code split is possible, and it includes a simple and extensible Parameter PropTypes validater.
It is implemented as lightly as possible to reduce the burden when running Lambda.
🚀 v1.0 added features
A Validate function that is easy to expand and use has been added, and deep data of arrays and objects can now be processed.It is compatible even in environments other than lambda. (node express etc.)
Install
npm i aws-lambda-middleware
Quick setting
const { Middleware, Prop } = require('aws-lambda-middleware')
exports.handler = new Middleware().add({
queryStringParameters: {
username: Prop.string.required(),
age: Prop.integer,
friends: [
{
name: Prop.string.length({ max: 20 }),
gender: Prop.string.or(['male', 'female'])
}
]
}
}).add(async (event, context, prevData) => {
const query = event.queryStringParameters
//your code
return {
statusCode: 200,
body: JSON.stringify({
message: 'success'
})
}
})
Options
You can set global options and cluster options.
You can set options such as
trim
.
Middleware
You can simply apply Middleware in Lambda.
PropTypes
Checks and corrects the data types of request parameters.
PropTypes
andProp
are the same object.
Validate
It only verifies the validity of the request parameter value.
You can use it by adding custom rules.
The rules added to PropTypes and Validate are written in one line and used.
Message
Error messages can be organized into templates.
with Express
Introducing a method that can be applied to the Express framework.
It can also be used in other frameworks.
⚠️ Upgrading from v0.9 to v1.0
1. object
and array
expressions
object
and array
are designated as reserved prop name, so the rule cannot be overwritten.
2. Option settings for each PropTypes
trim settings for each PropTypes use .option()
.
{
param: Prop.string.option({ trim: false })
}
3. PropTypes
and Prop
The abbreviated Prop
can be used instead of the PropTypes
.PropTypes
can still be used as well.
4. .isRequired
has been replaced by .required()
.
.isRequired
is also compatible, but not recommended.
5. Parameter type of PropTypes.*.default() function
When dynamically setting the default value of PropTypes, the parameter type has been changed to named parameters
.
v0.9
Prop.*.default((event) => {})
v1.0
Prop.*.default(({ event }) => {})
6. Interpreting object
and array
expressions
The interpretation of Object and Array expressions has been changed from validate only when value exists
to required validation
.
When setting the body as shown below, the returned status depends, so check the item
document in PropTypes > Support methods
.
exports.handler = new Middleware().add({
body: {
myId: Prop.string
}
})
v0.9
Even if the body of the request parameter is an empty Object or has no value, status = 200
is returned.
v1.0
If the body of the request parameter is an empty Object or has no value, status = 400
is returned.
In order to validate only when value exists
for the body, you must also set PropTypes on the body.
exports.handler = new Middleware().add({
body: Prop.object.item({
myId: Prop.string
})
})