• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

garbin/koapi: RESTful API framework based on koa and bookshelf

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

garbin/koapi

开源软件地址:

https://github.com/garbin/koapi

开源编程语言:

JavaScript 100.0%

开源软件介绍:

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.

License

MIT




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap