![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
express-dry-router
Advanced tools
An express router for people who hate repeating themselves.
If we consider a typical route in an express app:
// app.js
var routes = require('./app/routes');
app.get('/admin/login', routes.admin.login);
// routes/index.js
exports.admin = {
login: function (req, res) {
res.render('login', { pageTitle: 'Login'});
};
The name of the route is repeated three times - twice in app.js (/admin/login
and routes.admin.login
) and as part of the object hirearchy in in routes/index.js
Expess-dry-router allows you to describe routes with a single source of truth, the object hierarchy. The above example could be re-written like this:
// app.js
var routes = require('./app/routes');
var configureDryRoutes = require('express-dry-router');
configureDryRoutes(routes, app);
// routes/index.js
module.exports = {
admin: {
login: {
get: function (req, res) {
res.render('login', { title: 'Login'});
}
}
}
};
This example demonstrates setting up routes with GET, PUT, POST and DELETE HTTP methods.
var express = require('express');
var http = require('http');
var configureDryRoutes = require('express-dry-router');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(app.router);
var routes = {
myapp: {
resources: {
":id": {
get: function (req, res) {
res.send("Retrieve a representation of " + req.params.id);
},
put: function (req, res) {
res.send("Replace " + req.params.id + ", or if it doesn't exist, create it.");
},
post: function (req, res) {
res.send("Not generally used.");
},
delete: function (req, res) {
res.send("Delete " + req.params.id);
}
},
get: function (req, res) {
res.send("List the URIs and perhaps other details of the collection's members.");
},
put: function (req, res) {
res.send("Replace the entire collection with another collection.");
},
post: function (req, res) {
res.send("Create a new entry in the collection. The new entry's URI is assigned automatically and is usually returned by the operation.");
},
delete: function (req, res) {
res.send("Delete the entire collection.");
}
}
}
};
configureDryRoutes(routes, app);
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
Opening http://localhost:3000/myapp/resources in a browser will cause a HTTP GET request to be sent to the server. The handler defined in rotues.myapp.resources.get
will be called and "List the URIs and perhaps other details of the collection's members." will be returned in the HTTP response to the browser.
Opening http://localhost:3000/myapp/resources/item1 in a browser will cause a HTTP GET request to being sent to the server. The handler defined in rotues.myapp.resources.":id".get
will be called and "Retrieve a representation of item1" will be returned in the HTTP response to the browser.
Creating a HTTP request with one of the other HTTP methods (PUT, POST and DELETE) will cause the corresponding handlers in the rotues
object hierarchy to be called. This can be tested using the Dev HTTP Client in Chrome, for example.
FAQs
Express router for people who hate repeating themselves
The npm package express-dry-router receives a total of 0 weekly downloads. As such, express-dry-router popularity was classified as not popular.
We found that express-dry-router demonstrated a not healthy version release cadence and project activity because the last version was released 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.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.