2012-04-18 33 views
7

Tôi đang xem xét Node.js và suy nghĩ về việc sử dụng nó để xây dựng một API. Từ những gì tôi có thể nói, ExpressJS sẽ là khuôn khổ web và không phải là những gì tôi muốn tìm kiếm để giải quyết vấn đề này.Dịch vụ web của Node.js trông như thế nào?

Vậy dịch vụ web trông như thế nào? Nó sẽ đơn giản là tạo ra một máy chủ, nói chuyện với mongo và trả về kết quả? Ngoài ra, định tuyến trông như thế nào? (Tôi rõ ràng muốn 'thiết kế' các tuyến đường).

Trả lời

4

Nếu Express sẽ được khuôn khổ web của bạn, nhìn vào express-resource (Github) middleware cho định tuyến một API. Bạn xác định tài nguyên và nó sẽ nối dây định tuyến kiểu REST cho bạn với rất ít bản mẫu.

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

Được nêu ở trên, tài nguyên nhanh sẽ kết nối tất cả các tuyến đường kiểu REST với hành động bạn cung cấp, trả về JSON theo mặc định. Trong routes/horses.js, bạn xuất hành động cho tài nguyên đó, dọc theo dòng:

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 

Bạn có thể đáp ứng với cơ quan đại diện khác nhau:

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

middlewares như express-resource có thể làm cho cuộc sống với Node và Express dễ dàng hơn nhiều, mất xem qua các ví dụ về github để xem liệu nó sẽ làm những gì bạn cần.

1

Nút ở mức khá thấp. Nó giống như C trong trang phục của JavaScript. Vì nó có thể so sánh với C, có khá nhiều rất nhiều bạn có thể làm với Nút. Tạo máy chủ web chỉ là một trong số đó. Bạn có thể tạo các máy chủ trò chuyện trực tiếp bằng cách sử dụng ổ cắm, blog, phát trực tuyến, vv Khả năng là vô hạn. Bạn bị giới hạn bởi trí tưởng tượng của bạn.

Định tuyến chỉ là một nhiệm vụ mà bạn thực hiện các lệnh (thường qua URL hoặc tiêu đề) và thực hiện các tác vụ dựa trên các lệnh đó.

Nhưng ngay cả khi tôi chưa thu thập bề mặt nút. API của nó rất lớn và ngày càng lớn hơn. Tốt hơn hãy thử sử dụng một số thư viện cơ bản như Express hoặc Connect đầu tiên vì chúng khá trừu tượng các yêu cầu cơ bản của việc xây dựng máy chủ từ mã.

2

Đây là sơ khai tra cứu tên ngựa từ cơ sở dữ liệu Postgres và trả về kết quả dưới dạng JSON. Khách hàng sẽ truy cập sẽ truy cập vào API bằng cách để giải quyết như 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)); 
     }); 
    }); 
}); 
Các vấn đề liên quan