Awesome
koa-middlewares
easy way to use some small but useful koa middlewares.
PRs are welcome, but only for those small and general middlewares.
install
npm install koa-middlewares --save
middlewares
- koa-bodyparser
- koa-compress
- koa-conditional-get
- koa-csrf
- koa-ejs
- koa-etag
- koa-favicon
- koa-generic-session
- koa-logger
- koa-onerror
- koa-redis
- koa-resource-router
- koa-rewrite
- koa-router
- koa-rt
- koa-safe-jsonp
- koa-session
- koa-static-cache
see exports
Usage
var koa = require('koa');
var middlewares = require('koa-middlewares');
var router = middlewares.router();
var app = koa();
router.get('/', function *(){
this.body = 'hello koa-middlewares';
});
app.use(middlewares.bodyParser());
app.use(middlewares.conditional());
app.use(middlewares.etag());
app.use(middlewares.compress());
middlewares.csrf(app);
app.use(router.routes());
app.use(router.allowedMethods());
app.listen(7001);
Middlewares Quick Guide
- koa-bodyparser: post body parser,
for
application/json
andapplication/x-www-form-urlencoded
.
app.use(middlewares.bodyParser({
limit: '10mb'
}));
app.use(function *(next) {
var postBody = this.request.body;
});
- koa-csrf: CSRF tokens.
middlewares.csrf(app);
app.use(function *checkCsrf(next) {
if (this.method === 'GET' ||
this.method === 'HEAD' ||
this.method === 'OPTIONS') {
return yield *next;
}
this.assertCsrf();
yield next;
});
- koa-ejs: ejs view render middleware. support all feature of ejs.
middlewares.render(app, {
root: path.join(__dirname, 'view')
});
app.use(function *() {
yield this.render('page.html', {foo: 'bar'});
});
- koa-etag: ETag support for Koa responses.
- koa-conditional-get: HTTP response freshness testing middleware base on node-fresh. use it upstream from etag.
app.use(middlewares.conditional());
app.use(middlewares.etag());
- koa-favicon: Bounce favicon requests with a 404.
app.use(middlewares.favicon());
- koa-safe-jsonp: A safe jsonp plugins for koa.
middlewares.jsonp(app);
app.use(function* () {
this.jsonp = {foo: 'bar'};
});
- koa-logger: Development style logger.
app.use(middlewares.logger());
- koa-session: cookie base session.
app.use(middlewares.cookieSession());
- koa-generic-session: A session like connect with memory,
has friendly APIs for work with other Stores such as
redis
,mongo
. - koa-redis: Work togather with
koa-generic-session
, provide a redis store from koa-sess.
app.use(middlewares.session({
store: middlewares.RedisStore(),
defer: true
}));
app.use(function *() {
var session = yield this.session;
session.foo = 'bar';
this.body = this.session.foo;
});
- koa-router: Provide express-style routing using app.get, app.put, app.post.
var router = middlewares.router();
router.get('/', function *() {
this.body = 'Hello koa-router';
});
app.use(router.routes());
app.use(router.allowedMethods());
- koa-resource-router: RESTful resource routing for koa.
var users = new middlewares.Resource('users');
app.use(users.middleware());
app.get('/users', function *() {
this.body = [{name: 'Lee'}, {name: 'Han'}];
});
- koa-rewrite: URL rewrite middleware.
app.use(middlewares.rewrite('/js/*', '/public/assets/js/$1'));
- koa-rt: Log response time, support custom with microtime.
var microtime = require('microtime');
app.use(middlewares.rt({
timer: microtime
}));
- koa-static-cache: Static file serving from memory.
app.use(middlewares.staticCache(path.join(__dirname, 'public'), {
buffer: true,
maxAge: 60 * 60 * 24 * 7,
dir: path.join(rootdir, 'public')
}));
- koa-compress: Compress middleware for Koa, support
gzip
anddeflate
var app = koa()
app.use(compress({
threshold: 2048,
flush: require('zlib').Z_SYNC_FLUSH
}))
- koa-onerror: Error handler
var app = koa()
onerror(app);