96 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict'
 | |
| 
 | |
| /**
 | |
|  * Module dependencies.
 | |
|  */
 | |
| 
 | |
| var express = require('../../');
 | |
| 
 | |
| var app = module.exports = express();
 | |
| 
 | |
| // Ad-hoc example resource method
 | |
| 
 | |
| app.resource = function(path, obj) {
 | |
|   this.get(path, obj.index);
 | |
|   this.get(path + '/:a..:b{.:format}', function(req, res){
 | |
|     var a = parseInt(req.params.a, 10);
 | |
|     var b = parseInt(req.params.b, 10);
 | |
|     var format = req.params.format;
 | |
|     obj.range(req, res, a, b, format);
 | |
|   });
 | |
|   this.get(path + '/:id', obj.show);
 | |
|   this.delete(path + '/:id', function(req, res){
 | |
|     var id = parseInt(req.params.id, 10);
 | |
|     obj.destroy(req, res, id);
 | |
|   });
 | |
| };
 | |
| 
 | |
| // Fake records
 | |
| 
 | |
| var users = [
 | |
|   { name: 'tj' }
 | |
|   , { name: 'ciaran' }
 | |
|   , { name: 'aaron' }
 | |
|   , { name: 'guillermo' }
 | |
|   , { name: 'simon' }
 | |
|   , { name: 'tobi' }
 | |
| ];
 | |
| 
 | |
| // Fake controller.
 | |
| 
 | |
| var User = {
 | |
|   index: function(req, res){
 | |
|     res.send(users);
 | |
|   },
 | |
|   show: function(req, res){
 | |
|     res.send(users[req.params.id] || { error: 'Cannot find user' });
 | |
|   },
 | |
|   destroy: function(req, res, id){
 | |
|     var destroyed = id in users;
 | |
|     delete users[id];
 | |
|     res.send(destroyed ? 'destroyed' : 'Cannot find user');
 | |
|   },
 | |
|   range: function(req, res, a, b, format){
 | |
|     var range = users.slice(a, b + 1);
 | |
|     switch (format) {
 | |
|       case 'json':
 | |
|         res.send(range);
 | |
|         break;
 | |
|       case 'html':
 | |
|       default:
 | |
|         var html = '<ul>' + range.map(function(user){
 | |
|           return '<li>' + user.name + '</li>';
 | |
|         }).join('\n') + '</ul>';
 | |
|         res.send(html);
 | |
|         break;
 | |
|     }
 | |
|   }
 | |
| };
 | |
| 
 | |
| // curl http://localhost:3000/users     -- responds with all users
 | |
| // curl http://localhost:3000/users/1   -- responds with user 1
 | |
| // curl http://localhost:3000/users/4   -- responds with error
 | |
| // curl http://localhost:3000/users/1..3 -- responds with several users
 | |
| // curl -X DELETE http://localhost:3000/users/1  -- deletes the user
 | |
| 
 | |
| app.resource('/users', User);
 | |
| 
 | |
| app.get('/', function(req, res){
 | |
|   res.send([
 | |
|     '<h1>Examples:</h1> <ul>'
 | |
|     , '<li>GET /users</li>'
 | |
|     , '<li>GET /users/1</li>'
 | |
|     , '<li>GET /users/3</li>'
 | |
|     , '<li>GET /users/1..3</li>'
 | |
|     , '<li>GET /users/1..3.json</li>'
 | |
|     , '<li>DELETE /users/4</li>'
 | |
|     , '</ul>'
 | |
|   ].join('\n'));
 | |
| });
 | |
| 
 | |
| /* istanbul ignore next */
 | |
| if (!module.parent) {
 | |
|   app.listen(3000);
 | |
|   console.log('Express started on port 3000');
 | |
| }
 |