sundae

0.6.1 • Public • Published

sundae

Rtf restful framework for node

NPM version Build Status Talk topic

Intro

Sundae is a light weight api framework based on express, but more intesting than express.

A quick brief of router

app = sundae express()
 
# You can definitely declare the path to route 
# Router support all methods exported from `methods` module (get/post/put/delete/options/etc...) 
# The route pattarn is something like `app[method] path, to: {controller}#{action}` 
app.get '/'to: 'home#index'
 
# Post method 
app.post '/'to: 'home#create'
 
# Resource route 
# Then you also got the `resource` function to do the above things more restfully 
app.resource 'home'only: ['create''read']
 
# Router options 
# Router support some options like 
# `only`: Only use actions listed in the only option 
# `except`: Omit the actions in except option 
# `to`: Alias to `ctrl#action` 
# `ctrl`: Controller name 
# `action`: Action name 
# The example below shows mapping a group of `user` restful apis to the admin controller 
app.resource 'user'ctrl: 'admin'

A quick brief of controller

app = sundae express()
 
app.controller 'home'->
 
  # Mixin permission functions 
  @mixin require './mixins/permission'
 
  # Request should contain these params 
  @ensure 'user-agent'only: 'index'
 
  # These filters will execute before controller.index action 
  @before 'checkAgent'
 
  # We'll filter the useless key of the callback data 
  @select '-useless'
 
  # This assembler function is declared in home mixer 
  @after 'changeName'
 
  # This is a controller action 
  # You can call this function through router 
  @action 'index'(req, res, callback) ->
    callback null,
      welcome: 'Hello World'
      "user-agent": req.get('user-agent')
      useless: 'useless message'
 
  # This is a filter function looks like controller actions 
  # You can call this function from router 
  # But most time you shouldn't do this 
  @action 'checkAgent'(req, res, callback) ->
    userAgent = req.get('user-agent')
    # If the first param of callback is not null 
    # controller.index will not be called 
    return callback(new Error('GOD! WHY ARE YOU STILL USING IE?')) if userAgent.match /MSIE/
    callback()

Router options

  • only only keep the specific actions
  • except without the specific actions

Decorator options

  • only only the specific actions will apply hooks
  • except all actions will apply hooks without the except actions
  • parallel hooks will be parallel executed, the default mode is series (execute one by one)

TODO

Changelog

0.6.1

  • Add req.getParams function to get the original param given by user

0.6.0

  • Support stand alone application build with sundae
  • Set app.request/response to an constructor when using sundae without express
  • Add has function on request

0.5.10

  • Add mask decorator;

0.5.8

  • Add least decorator.

0.5.0

  • Apply sundae on the application level.
  • New router, controller, action patterns.

0.4.0

  • remove express in dependencies, you should require express by yourself in application
  • change the initialize functions, for more infomation, check the 'examples' directory
  • remove cli mode

0.3.6

  • use some options in the resource directive, e.g. ctrl, action ...

0.3.3

  • fix expand of req.headers, req.cookies etc.

0.3.1

  • remove wrap of actions, every action will receive three arguments: req, res, callback

0.3.0

  • hooks do not apply on each action now, they are only bind to actions emit by router
  • embed err1st package

0.2.7

  • ignore lib directory in development mode

0.2.5

  • clone _before/_after actions when extends from parent class

0.2.2 ~ 0.2.4

  • give up using transfer option, it's not a good idea, find another way

0.2.1

  • check invalid params in router
  • error support for 404 and 500 response

0.2.0

  • change the statement of decorators

0.1.5

  • change router to singleton, add router _stack

0.1.4

  • fix post decorator bug

0.1.3

  • add assembler, post decorators
  • fix mixer loader

0.1.2

  • auto load mixers

0.1.1

  • add more comments in demo controllers
  • fix request reset params bug
  • fix cli init crash

0.1.0

  • new beginning of sundae framework

Readme

Keywords

Package Sidebar

Install

npm i sundae

Weekly Downloads

41

Version

0.6.1

License

MIT

Last publish

Collaborators

  • sailxjx