一个简单的nodejs web api开发框架
JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib
.gitignore
LICENSE
README.md
index.js
package.json

README.md

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"}]