suona

一个简单的web api 开发框架

npm install suona
5 downloads in the last week
20 downloads in the last month

suona

一个十分简单的express封装, restful风格, 分为Api路由和web路由,文档下个版本完善

 开始


安装 npm install suona

var suona = require("suona")

var Controllers = suona.Controllers

var auth = function(req, res, next) {
  if(req.get("token") != "123123123") {
    res.json(401, {message: "无权访问"})
  } else {
    next()
  }
}

// 单独路由
var usersController = new Controllers("users")

usersController.on("show", function(req, res) {
  res.json(200, {message: "show" + req.params.id })
})

usersController.on("index", function(req, res) {
  res.json(200, {message: "hello index"})
})

usersController.on("create", auth, function(req, res) {
  res.json(200, {message: "create"})
})

usersController.on("update", auth, function(req, res) {
  res.json(200, {message: "update"})
})

usersController.on("destroy", auth, function(req, res) {
  res.json(200, {message: "destroy"})
})

// 复数路由
var userController = new suona.Controller("user")

userController.on("show", function(req, res) {
  res.json(200, {message: "show" + req.params.id })
})

userController.on("create", auth, function(req, res) {
  res.json(200, {message: "create"})
})

userController.on("update", auth, function(req, res) {
  res.json(200, {message: "update"})
})

userController.on("destroy", auth, function(req, res) {
  res.json(200, {message: "destroy"})
})

console.log(suona.app.routes)
suona.app.listen("5000")

before方法的使用

var userController = new suona.Controller("user/:user_id/pages")

userController.before("only:show:create", function(req, res, next) {
  if(req.get("token") != "123123123") {
    res.json(401, {message: "无权访问"})
  } else {
    next()
  }
})

userController.before("all", function(req, res, next) {
  if (req.get("app_key") != "123123") {
    res.json(401, {message: "密钥错误"})
  } else {
    next()
  }
})

userController.on("show", function(req, res){
  res.json(200, {message: "test1"})
})

userController.on("create", function(req, res){
  res.json(200, {message: "test2"})
})

注意: before 的调用顺序是先调用only再调用all

提供一个简单的json处理方式

var temp = {name: "mj", age: "21", password: "123123123"}
var temp1 = suona.json(temp1, "name", "age")
#=> {name: "mj", age: "21"}

处理数组可以使用jsonArray

var temp = [{name: "mj1", age: "21"}, {name: "mj2", age: "21"}]
var temp1 = suona.jsonArray(temp, "name")
#=> [{name: "mj1"}, {name: "mj2"}]
npm loves you