簡體   English   中英

Node.js Web服務是什么樣的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM