koapi
v0.10.74
Published
RESTful API framework based on koajs
Downloads
316
Readme
Koapi
RESTful API framework based on koa and bookshelf
Writing a RESTful API has never been so easy!
Intro
Koapi is a library for building RESTful APIs in a really simple way.
Installation
npm install koapi
Write your APIs in just ONE minute
Assume you have database below
Table posts
| id | title | contents | created_at | updated_at | |----|-------|----------|------------|------------| | 1 | Title | Contents | 2016-8-1 | 2016-8-1 |
Table comments
| id | post_id | title | contents | created_at | updated_at | |----|---------|-------|----------|------------|------------| | 1 | 1 | Title | Comment | 2016-8-1 | 2016-8-1 |
Here we go!
app.js
const { Koapi, router, middlewares, model } = require('koapi')
const app = new Koapi();
/****************** Connect to database ******************/
model.connect({
client: 'pg',
connection: {
host : '127.0.0.1',
user : 'your_database_user',
password : 'your_database_password',
database : 'myapp_test'
}
})
class Comment extends model.Base {
get tableName () { return 'comments' }
get hasTimestamps () { return true }
}
class Post extends model.Base {
get tableName () { return 'posts' }
get hasTimestamps () { return true }
comments () {
return this.hasMany(Comment);
}
}
/****************** Implement Routers ******************/
const comments = router.resource(Comment, {
collection: ctx => ctx.state.parents.post.comments()
setup (route) {
// method "crud" is a shortcut for "create", "read", "update" and "destroy"
// YOU CAN ALSO USE MIDDLEWARE in "create", "read", "update", "destroy"
route.create(async(ctx, next) => {
// you can do anything before create
await next();
// you can do anything after create
})
route.read(/* You can place any middleware here if you need */{
filterable: ['created_at'], // filterable fields
sortable: ['created_at'], // sortable fields
});
route.destroy()
}
})
// POST /posts
// GET /posts
// GET /posts/:id
// PATCH /posts/:id
// DELETE /posts/:id
const posts = router.resource(Post, route => route.crud()).children(comments)
/****************** Run server ******************/
app.use(middlewares.preset('restful'))
app.use(middlewares.routers([ posts ]))
app.listen(3000);
run
node ./app
You have done your RESTful APIs in ONE minute
Your API is far more complicated than this?
Checkout Koapp for your situation.