2012-04-18 15 views
7

Estoy echando un vistazo a Node.js y pensando en usarlo para construir una API. Por lo que puedo decir, ExpressJS sería el marco web y no es lo que estaría buscando para resolver esto.¿Cómo se ve un servicio web Node.js?

¿Cómo sería un servicio web? ¿Sería simplemente crear un servidor, hablar con mongo y devolver resultados? Además, ¿cómo se ve el enrutamiento? (Obviamente quiero 'diseñar' las rutas).

Respuesta

4

Si expreso sería su framework de desarrollo web, mira el middleware express-resource (Github) para encaminar una API. Usted define los recursos y cableará el enrutamiento de estilo REST para usted con muy poca repetición.

app.resource('horses', require('./routes/horses'), { format: json }) 

Dado lo anterior, expresar los recursos serán conectar todas las rutas de estilo REST a las acciones que la oferta, regresan JSON por defecto. En routes/horses.js, exportar acciones de ese recurso, a lo largo de las líneas de:

exports.index = function index (req, res) { 
    // GET http://yourdomain.com/horses 
    res.send(MyHorseModel.getAll()) 
} 

exports.show = function show (req, res) { 
    // GET http://yourdomain.com/horses/seabiscuit 
    res.send(MyHorseModel.get(req.params.horse)) 
} 

exports.create = function create (req, res) { 
    // PUT http://yourdomain.com/horses 
    if (app.user.canWrite) { 
    MyHorseModel.put(req.body, function (ok) { res.send(ok) }) 
    } 
} 

// ... etc 

Puede responder con diferentes representaciones:

exports.show = { 
    json: function (req, res) { 
    // GET http://yourdomain/horses/seabiscuit.json 
    } 
, xml: function (req, res) { 
    // GET http://yourdomain/horses/seabiscuit.xml 
    } 
} 

Middlewares como express-resource pueden hacer la vida con el Nodo y expreso mucho más fácil, tomar Eche un vistazo a los ejemplos en github para ver si hará lo que necesita.

1

El nodo es bastante bajo nivel. Es como C en la ropa de JavaScript. Dado que es comparable a C, hay casi mucho que se puede hacer con Node. Crear servidores web es solo uno de ellos. Puede crear servidores de chat en vivo usando sockets, blogs, streaming, etc. Las posibilidades son infinitas. Usted está limitado solo por su imaginación.

El enrutamiento es solo una tarea en la que se aceptan comandos (comúnmente a través de URL o encabezados) y se realizan tareas basadas en los comandos que se pasan.

Pero incluso aún no he esparcido la superficie del nodo. Su API es enorme y cada vez más grande. Mejor intente usar alguna biblioteca básica como Express o Connect primero, ya que abstraen el requisito básico de construir el servidor a partir del código.

2

Aquí hay un stub que busca el nombre de un caballo de una base de datos Postgres y devuelve el resultado como JSON. Los clientes tendrían acceso tendrían acceso a la API por ir a tratar como http://yourdomain.com/api/horse/seabiscuit

app.get('/api/horse/:name', function(req, res){ 

    pg.connect(conString, function(err, client) { 

     var horse = req.params.name; 
     var sql = "..."; 

     client.query(sql, function(err, result) { 
      if (err) { 
       ... 
      } 

      for (var i=0; i<result.rows.length; i++) { 
       // Customize data as needed 
      } 
      return res.send(JSON.stringify(result.rows)); 
     }); 
    }); 
});