2012-04-18 9 views
7

Ich schaue mir Node.js an und denke darüber nach, es für den Aufbau einer API zu verwenden. Von dem, was ich sagen kann, wäre ExpressJS das Web-Framework und nicht das, wonach ich suchen würde, um das zu lösen.Wie sieht ein Node.js-Webdienst aus?

Wie also würde ein Webdienst aussehen? Würde es einfach einen Server erstellen, mit Mongo sprechen und Ergebnisse zurückgeben? Wie sieht das Routing aus? (Ich möchte natürlich die Routen "entwerfen").

Antwort

4

Adresse gehen Wenn Express Ihre Web-Framework wäre, Blick auf die express-resource (Github) Middleware für eine API-Routing. Sie definieren Ressourcen und es verbindet REST-Stil Routing für Sie mit sehr wenig Standard.

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

die oben angegebenen, Express-Ressource werden alle REST-Stil Routen zu Aktionen anschließen Sie liefern, JSON standardmäßig zurück. In routes/horses.js exportieren Sie Aktionen für die Ressource, entlang der Linien von:

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 

Sie mit verschiedenen Darstellungen reagieren können:

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

Middlewares wie express-resource kann das Leben mit Knoten und Express viel einfacher machen, nehmen Sie Schauen Sie sich die Beispiele auf Github an, um zu sehen, ob es das tut, was Sie brauchen.

1

Knoten ist ziemlich niedrigen Pegel. Es ist wie C in JavaScript-Kleidung. Da es mit C vergleichbar ist, gibt es ziemlich viel viel können Sie mit Node tun. Das Erstellen von Webservern ist nur eine davon. Sie können Live-Chat-Server mit Sockets, Blogs, Streaming usw. erstellen. Die Möglichkeiten sind unbegrenzt. Sie sind nur durch Ihre Vorstellungskraft begrenzt.

Routing ist nur eine Aufgabe, in der Sie Befehle (üblicherweise per URL oder Header) übernehmen und Tasks ausführen, die auf diesen übergebenen Befehlen basieren.

Aber selbst ich habe noch nicht die Oberfläche des Knotens verstreut. Es ist API ist riesig und wird größer. Versuchen Sie es besser mit einer Basisbibliothek wie Express oder Connect, da diese die Grundvoraussetzung für den Aufbau des Servers aus dem Code ziemlich abstrahieren.

2

Hier ist ein Stub, der einen Pferdenamen aus einer Postgres-Datenbank sucht und das Ergebnis als JSON zurückgibt. Kunden würden zugreifen würde die API zugreifen, indem Sie wie 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)); 
     }); 
    }); 
}); 
Verwandte Themen