Files
lunchrun.me/config/routes.js
Ben Ramey 2a34de5580 Sails app
2014-03-08 18:32:43 -06:00

167 lines
4.6 KiB
JavaScript

/**
* Routes
*
* Sails uses a number of different strategies to route requests.
* Here they are top-to-bottom, in order of precedence.
*
* For more information on routes, check out:
* http://sailsjs.org/#documentation
*/
/**
* (1) Core middleware
*
* Middleware included with `app.use` is run first, before the router
*/
/**
* (2) Static routes
*
* This object routes static URLs to handler functions--
* In most cases, these functions are actions inside of your controllers.
* For convenience, you can also connect routes directly to views or external URLs.
*
*/
module.exports.routes = {
// By default, your root route (aka home page) points to a view
// located at `views/home/index.ejs`
//
// (This would also work if you had a file at: `/views/home.ejs`)
'/': {
view: 'home/index'
}
/*
// But what if you want your home page to display
// a signup form located at `views/user/signup.ejs`?
'/': {
view: 'user/signup'
}
// Let's say you're building an email client, like Gmail
// You might want your home route to serve an interface using custom logic.
// In this scenario, you have a custom controller `MessageController`
// with an `inbox` action.
'/': 'MessageController.inbox'
// Alternatively, you can use the more verbose syntax:
'/': {
controller: 'MessageController',
action: 'inbox'
}
// If you decided to call your action `index` instead of `inbox`,
// since the `index` action is the default, you can shortcut even further to:
'/': 'MessageController'
// Up until now, we haven't specified a specific HTTP method/verb
// The routes above will apply to ALL verbs!
// If you want to set up a route only for one in particular
// (GET, POST, PUT, DELETE, etc.), just specify the verb before the path.
// For example, if you have a `UserController` with a `signup` action,
// and somewhere else, you're serving a signup form looks like:
//
// <form action="/signup">
// <input name="username" type="text"/>
// <input name="password" type="password"/>
// <input type="submit"/>
// </form>
// You would want to define the following route to handle your form:
'post /signup': 'UserController.signup'
// What about the ever-popular "vanity URLs" aka URL slugs?
// (you might remember doing this with `mod_rewrite` in Apache)
//
// This is where you want to set up root-relative dynamic routes like:
// http://yourwebsite.com/twinkletoez
//
// NOTE:
// You'll still want to allow requests through to the static assets,
// so we need to set up this route to ignore URLs that have a trailing ".":
// (e.g. your javascript, CSS, and image files)
'get /*(^.*)': 'UserController.profile'
*/
};
/**
* (3) Action blueprints
* These routes can be disabled by setting (in `config/controllers.js`):
* `module.exports.controllers.blueprints.actions = false`
*
* All of your controllers ' actions are automatically bound to a route. For example:
* + If you have a controller, `FooController`:
* + its action `bar` is accessible at `/foo/bar`
* + its action `index` is accessible at `/foo/index`, and also `/foo`
*/
/**
* (4) Shortcut CRUD blueprints
*
* These routes can be disabled by setting (in config/controllers.js)
* `module.exports.controllers.blueprints.shortcuts = false`
*
* If you have a model, `Foo`, and a controller, `FooController`,
* you can access CRUD operations for that model at:
* /foo/find/:id? -> search lampshades using specified criteria or with id=:id
*
* /foo/create -> create a lampshade using specified values
*
* /foo/update/:id -> update the lampshade with id=:id
*
* /foo/destroy/:id -> delete lampshade with id=:id
*
*/
/**
* (5) REST blueprints
*
* These routes can be disabled by setting (in config/controllers.js)
* `module.exports.controllers.blueprints.rest = false`
*
* If you have a model, `Foo`, and a controller, `FooController`,
* you can access CRUD operations for that model at:
*
* get /foo/:id? -> search lampshades using specified criteria or with id=:id
*
* post /foo -> create a lampshade using specified values
*
* put /foo/:id -> update the lampshade with id=:id
*
* delete /foo/:id -> delete lampshade with id=:id
*
*/
/**
* (6) Static assets
*
* Flat files in your `assets` directory- (these are sometimes referred to as 'public')
* If you have an image file at `/assets/images/foo.jpg`, it will be made available
* automatically via the route: `/images/foo.jpg`
*
*/
/**
* (7) 404 (not found) handler
*
* Finally, if nothing else matched, the default 404 handler is triggered.
* See `config/404.js` to adjust your app's 404 logic.
*/