Research
Recent Trends in Malicious Packages Targeting Discord
The Socket research team breaks down a sampling of malicious packages that download and execute files, among other suspicious behaviors, targeting the popular Discord platform.
express-route-grouping
Advanced tools
Readme
Although there are many express js route grouping packages, there is no grouping package with dynamic parameter holders feature. Beside Resource API Model approach has been integrated in this package basically.
NPM
$ npm i express-route-grouping --save
Yarn
$ yarn add express-route-grouping
import { Router } from 'express';
import RouteGroup from 'express-route-grouping';
const root = new RouteGroup('/', Router());
root.group('blogs', blogs => {
// -> /blogs
blogs.get('/', () => {});
blogs.group(':blogId', blog => {
// -> /blogs/:blogId
blog.get('/', (req, res) => {});
// -> /blogs/:blogId
blog.post('/', (req, res) => {});
// -> /blogs/:blogId/comments
blog.get('comments', (req, res) => {});
// -> /blogs/:blogId/likes
blog.get('likes', (req, res) => {});
});
});
app.use('/', root.export());
Not: You can nest all routes unlimitedly as above.
Resource api modeling is a approach to standarts some generic http operations.
Let's see the examples:
import { Router } from 'express';
import RouteGroup from 'express-route-grouping';
const root = new RouteGroup('/', Router());
root.group('products', products => {
products.resource({
handlers: {
// GET: /products
index(req, res) {},
// GET: /products/:productId
find(req, res) {},
// POST: /products
create(req, res) {},
// PUT: /products/:productId
update(req, res) {},
// PATCH: /products/:productId
patch(req, res) {},
// DELETE: /products/:productId
delete(req, res) {},
},
});
});
app.use('/', root.export());
You can also set a class instance including resource methods.
class BlogController {
// GET: /products
index = (req, res) => {};
// GET: /products/:productId
find = (req, res) => {};
// POST: /products
create = (req, res) => {};
// PUT: /products/:productId
update = (req, res) => {};
// PATCH: /products/:productId
patch = (req, res) => {};
// DELETE: /products/:productId
delete = (req, res) => {};
}
root.group('products', ({ resource }) => {
resource({
handlers: new BlogController(),
});
});
app.use('/', root.export());
Note: You don't have to add all methods to handlers. It will consider only the defined ones.
Name | Type | Description |
---|---|---|
handlers | Function/Function[] | This is main handler(s). It can pass multiple handlers. |
beforeHandlers | Function[] | Adds handlers to before main handlers. |
afterHandlers | Function[] | Adds handlers to after main handlers. |
import { Router } from 'express';
import RouteGroup from 'express-route-grouping';
const root = new RouteGroup('/', Router());
root.group('products', products => {
products.resource({
handlers: {
// -> index: (GET: /products)
// -> find: (GET: /products/:productId)
// -> create: (POST: /products)
// -> update: (PUT: /products/:productId)
// -> patch: (PATCH: /products/:productId)
// -> delete: (DELETE: /products/:productId)
},
});
products.group('items', items => {
items.resource({
handlers: {
// -> index: (GET: /products/:productId/items)
// -> find: (GET: /products/:productId/items/:itemId)
// -> create: (POST: /products/:productId/items)
// -> update: (PUT: /products/:productId/items/:itemId)
// -> patch: (PATCH: /products/:productId/items/:itemId)
// -> delete: (DELETE: /products/:productId/items/:itemId)
},
});
});
});
app.use('/', root.export());
$ npm test
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
FAQs
Easy route grouping for Express JS with resource api model.
The npm package express-route-grouping receives a total of 94 weekly downloads. As such, express-route-grouping popularity was classified as not popular.
We found that express-route-grouping demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
The Socket research team breaks down a sampling of malicious packages that download and execute files, among other suspicious behaviors, targeting the popular Discord platform.
Security News
Socket CEO Feross Aboukhadijeh joins a16z partners to discuss how modern, sophisticated supply chain attacks require AI-driven defenses and explore the challenges and solutions in leveraging AI for threat detection early in the development life cycle.
Security News
NIST's new AI Risk Management Framework aims to enhance the security and reliability of generative AI systems and address the unique challenges of malicious AI exploits.