© Keith Cirkel
K-Router may be freely distributed under the MIT license.
For all details and documentation: http://github.com/keithamus/k-router
This is the spec documentation for K-Router, generated by Mocha. If you want to see more detailed documentation about K-Router, check out the index.html page
app.use(router({ }));
app.use(router({ }));
router.route
.should.be.a('function');
router.resource
.should.be.a('function');
app.use(router({ app: app }));
router.route
.should.be.a('function');
router.route.route
.should.equal(router.route);
router.route('/x/y/z', view, 'respond', 'GET');
request(app).get('/x/y/z')
.expect(200)
.end(next);
router.route('/x/y/z', view, 'respond', 'get');
request(app).get('/x/y/z')
.expect(200)
.end(next);
router.route('/x/y/z', view, 'respond', 'get');
request(app).get('/x/y/z?v=1&x=2')
.expect(200)
.end(next);
var fn;
(fn = function () { router.route('/x/y/z', view, 'respond', 'FOO'); })
.should.throw('Invalid HTTP method: FOO');
router.route(/^\/x\/y\/z$/i, view, 'respond', 'GET');
request(app).get('/x/y/z')
.expect(200)
.end(next);
router.route('/x/y/z', view, 'respond', 'GET');
view.respond = function (request, response, next) {
request
.should.be.an('object');
response
.should.be.an('object');
next
.should.be.a('function');
next();
};
request(app).get('/x/y/z')
.expect(404)
.end(next);
router.route('/x/y/z', view, 'respond');
request(app).get('/x/y/z')
.expect(200)
.end(next);
app.use(connect.errorHandler());
router.route('/x/y/z', view, 'respond', 'GET');
request(app).get('/x/y/z/a')
.expect(404)
.end(next);
router.route('/x/y/z', view, 'respond', 'PUT');
app.use(connect.errorHandler());
request(app).get('/x/y/z').expect(405).expect('Allow', 'PUT').end(next);
router.route('/x/y/z', view, 'respondPut', 'PUT');
router.route('/x/y/z', view, 'respondGet', 'GET');
app.use(connect.errorHandler());
view.respondPut = function (req, res) {
res.statusCode = 200;
res.end('Put');
};
view.respondGet = function (req, res) {
res.statusCode = 200;
res.end('Get');
};
request(app).get('/x/y/z').expect(200).expect('Get').end(function () {
request(app).put('/x/y/z').expect(200).expect('Put').end(next);
});
router.route('/x/y/z', view, 'respondPut', 'PUT');
router.route('/x/y/z', view, 'respondGet', 'GET');
app.use(connect.errorHandler());
view.respondPut = function (req, res) {
res.statusCode = 200;
res.end('Put');
};
view.respondGet = function (req, res) {
res.statusCode = 200;
res.end('Get');
};
request(app).post('/x/y/z').expect(405).expect('Allow', 'GET, PUT').end(next);
router.route('/x/y/z', view, 'respond', 'GET');
request(app).get('/x/Y/z')
.expect(200)
.end(next);
app.use(router({ urlsCaseSensitive: true }));
router.route('/x/y/z', view, 'respond', 'GET');
request(app).get('/x/Y/z')
.expect(404)
.end(next);
router.route('/x/y/z', view, 'respond', 'GET');
request(app).get('/x/y/z/')
.expect(200)
.end(next);
app.use(router({ urlsAllowTrailingSlashes: true }));
router.route('/x/y/z', view, 'respond', 'GET');
request(app).get('/x/y/z/')
.expect(404)
.end(next);
router.route('/x/y/:name/:age', view, 'respond', 'GET');
view.respond = passErrorToCallback(next, function (req, res) {
req.params
.should.be.an('array');
req.params.name
.should.equal('foo');
req.params.age
.should.equal('21');
res.end('');
});
request(app).get('/x/y/foo/21').end(next);
router.route('/x/y/:name/:age', view, 'respond', 'GET');
request(app).get('/x/y/foo').expect(404).end(next);
router.route('/x/y/:name', view, 'respond', 'GET');
view.respond = passErrorToCallback(next, function (req, res) {
req.params
.should.be.an('array');
req.params.name
.should.equal('hey,foo=:D');
res.end('');
});
request(app).get('/x/y/hey%2Cfoo%3D%3AD').end(next);
router.route('/x/y/*', view, 'respond', 'GET');
view.respond = passErrorToCallback(next, function (req, res) {
req.params
.should.be.an('array');
req.params
.should.deep.equal(['foo/bar/baz/']);
res.end('');
});
request(app).get('/x/y/foo/bar/baz/').end(next);
router.route(/^\/(\w)\/(\w)\/(\w)\/?$/, view, 'respond', 'GET');
view.respond = passErrorToCallback(next, function (req, res) {
req.params
.should.be.an('array');
req.params
.should.deep.equal(['foo', 'bar', 'baz']);
res.end('');
});
request(app).get('/foo/bar/baz/').end(next);
router.route('/x/y/:name/:other?', view, 'respond', 'GET');
view.respond = passErrorToCallback(next, function (req, res) {
req.params
.should.be.an('array');
req.params.name
.should.equal('foo');
req.params.other
.should.equal('bar');
res.end('');
});
request(app).get('/x/y/foo/bar').end(next);
router.route('/x/y/:name/:other?', view, 'respond', 'GET');
view.respond = passErrorToCallback(next, function (req, res) {
req.params
.should.be.an('array');
req.params.name
.should.equal('foo');
should.not.exist(req.params.other);
res.end('');
});
request(app).get('/x/y/foo').end(next);
request(app).get('/x/y/z').expect(200).expect('list').end(next);
request(app).get('/x/y/z/new').expect(200).expect('new').end(next);
request(app).post('/x/y/z').expect(200).expect('create').end(next);
request(app).get('/x/y/z/foo').expect(200).expect('show:foo').end(next);
request(app).get('/x/y/z/foo/edit').expect(200).expect('edit:foo').end(next);
request(app).put('/x/y/z/foo').expect(200).expect('update:foo').end(next);
request(app).patch('/x/y/z/foo').expect(200).expect('update:foo').end(next);
request(app).del('/x/y/z/foo').expect(200).expect('destroy:foo').end(next);
request(app).post('/x/y/z/new').expect(405).end(next);
request(app).post('/x/y/z/new').expect(405).end(next);
request(app).put('/x/y/z').expect(405).end(next);
request(app).del('/x/y/z').expect(405).end(next);
request(app).post('/x/y/z/foo').expect(405).end(next);
delete view.destroy;
router(); // Reconfigure and empty existing routes
router.route.resources('/x/y/z', view);
request(app).del('/x/y/z/foo').expect(405).end(next);
delete view.edit;
router(); // Reconfigure and empty existing routes
router.route.resources('/x/y/z', view);
request(app).del('/x/y/z/bar/edit/').expect(404).end(next);
request(app).get('/x/y/z').expect(200).expect('show').end(next);
request(app).get('/x/y/z/new').expect(200).expect('new').end(next);
request(app).post('/x/y/z').expect(200).expect('create').end(next);
request(app).get('/x/y/z/edit').expect(200).expect('edit').end(next);
request(app).put('/x/y/z').expect(200).expect('update').end(next);
request(app).del('/x/y/z').expect(200).expect('destroy').end(next);
request(app).get('/x/y/z/foo').expect(404).end(next);
request(app).post('/x/y/z/foo').expect(404).end(next);
request(app).put('/x/y/z/foo').expect(404).end(next);
request(app).patch('/x/y/z/foo').expect(404).end(next);
request(app).del('/x/y/z/foo').expect(404).end(next);
request(app).post('/x/y/z/new').expect(405).end(next);
request(app).post('/x/y/z/new').expect(405).end(next);