express-dispatch

0.0.1 • Public • Published

This is a simple library that adds controller classes and parameter binding to express. It's really just a gimmick that I was tinkering with. I'm not sure if it's useful or even a remotely good idea.

Instead of just binding to a function, as is normal with express, dispatch lets you bind to a class and function.

Here's an example controller:

dispatch = require 'express-dispatch'
 
class ExampleController extends dispatch.Controller
 
  greet: (name) ->
    @response.send "Hello, #{name}!"
 
module.exports = ExampleController

Dispatch lets you connect a route pattern (like get /user/:userid or post /users) to an action method on a controller. Everything is connected up by name. Here's how we'd register our example controller to respond to GET requests at /greet:

express = require 'express'
dispatch = require 'express-dispatch'
 
controllers =
  test: ExampleController
 
routes =
  'get /greet': 'example.greet'
 
app = express()
dispatch.register(appcontrollersroutes)
app.listen(9999)

Now, when someone GETs /greet, a new instance of ExampleController will be created, and its greet() function will be called with the arguments bound by name to query string parameters.

$ curl -XGET http://127.0.0.1:9999/greet?name=Nate
Hello, Nate!
$ 

This also works with POSTs. If we changed our route to:

routes =
  'post /greet': 'example.greet'

Then we could do this:

$ curl -XPOST http://127.0.0.1:9999/greet -d 'name=Nate'
Hello, Nate!
$

(Note that this requires using the bodyParser express middleware.)

For more information, check out the examples and tests.

Dependents (0)

Package Sidebar

Install

npm i express-dispatch

Weekly Downloads

0

Version

0.0.1

License

none

Last publish

Collaborators

  • nkohari