UNPKG

koapi

Version:

RESTful API framework based on koajs

108 lines (83 loc) 2.67 kB
# [Koapi](http://koapi.github.io/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 ```bash 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 ```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 ```bash node ./app ``` You have done your RESTful APIs in ONE minute ## Your API is far more complicated than this? Checkout [Koapp](https://github.com/garbin/koapp) for your situation. ## License [MIT](http://opensource.org/licenses/MIT)