我考虑看看的Node.js和想用它来建立一个API。据我所知,ExpressJS将是Web框架,并不是我想要解决的问题。Node.js Web服务的外观如何?
所以将Web服务是什么样子?它只是创建一个服务器,与mongo交谈并返回结果?另外,路由是什么样的? (我显然想“设计”路线)。
我考虑看看的Node.js和想用它来建立一个API。据我所知,ExpressJS将是Web框架,并不是我想要解决的问题。Node.js Web服务的外观如何?
所以将Web服务是什么样子?它只是创建一个服务器,与mongo交谈并返回结果?另外,路由是什么样的? (我显然想“设计”路线)。
如果快递将是你的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上的例子,看它是否会做你需要的。
节点是相当低的水平。这就像JavaScript的服装中的C一样。由于它是堪比C,有非常很多你可以用节点执行。创建Web服务器只是其中之一。您可以使用套接字,博客,流媒体等创建实时聊天服务器。可能性是无限的。你只受到你的想象力的限制。
路由就是在那里你采取命令(通过URL或标题常用),并以此为基础进行通过这些命令任务的任务。
但是,即使我还没有scathed节点的表面。它的API非常庞大,并且变得越来越大。最好先尝试使用像Express或Connect这样的基本库,因为它们非常抽象从代码构建服务器的基本要求。
这里是一个存根从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));
});
});
});