2012-04-18 48 views
7

我考虑看看的Node.js和想用它来建立一个API。据我所知,ExpressJS将是Web框架,并不是我想要解决的问题。Node.js Web服务的外观如何?

所以将Web服务是什么样子?它只是创建一个服务器,与mongo交谈并返回结果?另外,路由是什么样的? (我显然想“设计”路线)。

回答

4

如果快递将是你的web框架,看看express-resource(Github上)中间件路由的API访问API。您可以定义资源,并且只需很少的样板就可以为您提供REST风格的路由。

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

鉴于上述情况,表达资源将钩出来REST风格的路线,你提供的动作,在默认情况下返回JSON。在routes/horses.js,导出操作该资源,沿着线:

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 

你可以用不同的表示回应:

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

中间件像express-resource可以使生活与节点和快速更容易,乘坐看看github上的例子,看它是否会做你需要的。

1

节点是相当低的水平。这就像JavaScript的服装中的C一样。由于它是堪比C,有非常很多你可以用节点执行。创建Web服务器只是其中之一。您可以使用套接字,博客,流媒体等创建实时聊天服务器。可能性是无限的。你只受到你的想象力的限制。

路由就是在那里你采取命令(通过URL或标题常用),并以此为基础进行通过这些命令任务的任务。

但是,即使我还没有scathed节点的表面。它的API非常庞大,并且变得越来越大。最好先尝试使用像Express或Connect这样的基本库,因为它们非常抽象从代码构建服务器的基本要求。

2

这里是一个存根从Postgres数据库查找一匹马的名字,并返回JSON作为结果。客户端将访问将被去解决诸如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)); 
     }); 
    }); 
});