Feature request: Add Route Specific Middleware for REST Event Hndler
svozza opened this issue · 2 comments
svozza commented
Use case
Users should be able to add middleware to specific routes that are ran after any global middlewares have ran.
Solution/User Experience
Register middleware
Middleware for routes is added as an argument to the HTTP verb methods exposed by the router:
const middleware1 = async (params, options, next) => {
console.log('middleware1-start');
await next();
console.log('middleware1-end');
};
const middleware2 = async (params, options, next) => {
console.log('middleware2-start');
await next();
console.log('middleware2-end');
};
const middleware3 = async (params, options, next) => {
console.log('middleware3-start');
await next();
console.log('middleware3-end');
};
app.use(middleware1);
app.get('/global', [], async () => {
console.log('handler');
return { success: true };
});
app.get('/route-specific', [middleware2, middleware3], async () => {
console.log('handler');
return { success: true };
});
await app.resolve(createTestEvent('/global', 'GET'), context);
/** prints
'middleware1-start',
'handler',
'middleware1-end',
**/
await app.resolve(createTestEvent('/route-specific', 'GET'), context);
/** prints
'middleware1-start',
'middleware2-start',
'middleware3-start',
'handler',
'middleware3-end',
'middleware2-end',
'middleware1-end',
**/Alternative solutions
Acknowledgment
- This feature request meets Powertools for AWS Lambda (TypeScript) Tenets
- Should this be considered in other Powertools for AWS Lambda languages? i.e. Python, Java, and .NET
Future readers
Please react with 👍 and your use case to help us understand customer demand.
powertools-for-aws-oss-automation commented
Warning
This issue is now closed. Please be mindful that future comments are hard for our team to see.
If you need more assistance, please either reopen the issue, or open a new issue referencing this one.
If you wish to keep having a conversation with other community members under this issue feel free to do so.
github-actions commented
This is now released under v2.26.0 version!