[英]What does a Node.js web service look like?
我正在研究Node.js並考慮使用它來構建API。 據我所知,ExpressJS將是Web框架,而不是我想要解決的問題。
那么Web服務會是什么樣子? 它只是創建一個服務器,與mongo交談並返回結果? 此外,路由是什么樣的? (我顯然想'設計'路線)。
如果Express將是您的Web框架,請查看用於路由API的express-resource (Github)中間件。 您可以定義資源,它將為您提供REST樣式的路由,只需很少的樣板。
app.resource('horses', require('./routes/horses'), { format: json })
鑒於上述情況,express-resource將把所有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這樣的中間件可以讓Node和Express的生活變得更加容易,看看github上的例子,看看它是否能滿足您的需求。
這是一個存根,它從Postgres數據庫中查找一個馬名,並將結果作為JSON返回。 客戶端訪問將通過訪問http://yourdomain.com/api/horse/seabiscuit等地址訪問API
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));
});
});
});
節點非常低。 就像JavaScript中的C一樣。 由於它可與C相媲美,因此您可以使用Node做很多事情。 創建Web服務器只是其中之一。 您可以使用套接字,博客,流媒體等創建實時聊天服務器。可能性是無限的。 你只受想象力的限制。
路由只是您接收命令(通常通過URL或標頭)並根據傳遞的命令執行任務的任務。
但即使我還沒有散布節點的表面。 它的API非常龐大而且越來越大。 最好先嘗試使用Express或Connect之類的基本庫,因為它們幾乎抽象了從代碼構建服務器的基本要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.