2013-04-22 12 views
8

Có hợp lý để sử dụng Node.js để viết một ứng dụng độc lập sẽ kết nối hai API REST không?Sử dụng Node.js để kết nối với một API REST

Một đầu sẽ là một POS - Point of sale - Hệ thống

Các khác sẽ là một nền tảng thương mại điện tử tổ chức

Sẽ có một giao diện tối thiểu cho cấu hình của dịch vụ. chỉ có bấy nhiêu thôi.

+0

Có, không sao. Tôi không thấy lý do tại sao bạn không thể sử dụng node.js cho mục đích đó. –

Trả lời

23

Có, Node.js hoàn toàn phù hợp để thực hiện cuộc gọi đến các API bên ngoài. Cũng giống như mọi thứ trong Node, tuy nhiên, các chức năng để thực hiện các cuộc gọi này dựa trên các sự kiện, có nghĩa là làm những việc như đệm dữ liệu phản hồi thay vì nhận được một phản hồi hoàn thành duy nhất.

Ví dụ:

// get walking directions from central park to the empire state building 
var http = require("http"); 
    url = "http://maps.googleapis.com/maps/api/directions/json?origin=Central Park&destination=Empire State Building&sensor=false&mode=walking"; 

// get is a simple wrapper for request() 
// which sets the http method to GET 
var request = http.get(url, function (response) { 
    // data is streamed in chunks from the server 
    // so we have to handle the "data" event  
    var buffer = "", 
     data, 
     route; 

    response.on("data", function (chunk) { 
     buffer += chunk; 
    }); 

    response.on("end", function (err) { 
     // finished transferring data 
     // dump the raw data 
     console.log(buffer); 
     console.log("\n"); 
     data = JSON.parse(buffer); 
     route = data.routes[0]; 

     // extract the distance and time 
     console.log("Walking Distance: " + route.legs[0].distance.text); 
     console.log("Time: " + route.legs[0].duration.text); 
    }); 
}); 

Nó có thể làm cho tinh thần để tìm thấy một thư viện wrapper đơn giản (hoặc viết riêng của bạn) nếu bạn đang đi để được làm rất nhiều các cuộc gọi.

+0

Cũng được giải thích +1 – AndrewMcLagan

+0

Tôi thực sự ấm áp với mô hình được mô phỏng nút. khi dữ liệu được chunked như thế này. có thể bắt đầu thao tác nó trước khi luồng đã kết thúc không? nó đến đúng không? – AndrewMcLagan

+0

Cảm ơn! Có, dữ liệu được truyền theo thứ tự. Nếu bạn có thể sử dụng dữ liệu trước khi phát trực tuyến hoàn tất, tôi không thấy lý do tại sao bạn không thể làm việc với nó trước đó (mặc dù cá nhân tôi chưa có trường hợp sử dụng cho nó). –

1

Chắc chắn. API Node.js chứa phương pháp để thực hiện các yêu cầu HTTP:

Tôi giả sử các ứng dụng bạn đang viết một ứng dụng web. Bạn có thể muốn sử dụng một khung như Express để loại bỏ một số công việc grunt (xem thêm this question on node.js web frameworks).

-1

Một công cụ dễ dàng và hữu ích hơn là chỉ sử dụng API như Unirest; URest là một gói trong NPM quá dễ sử dụng jus như

app.get('/any-route', function(req, res){ 
    unirest.get("https://rest.url.to.consume/param1/paramN") 
     .header("Any-Key", "XXXXXXXXXXXXXXXXXX") 
     .header("Accept", "text/plain") 
     .end(function (result) { 
     res.render('name-of-the-page-according-to-your-engine', { 
     layout: 'some-layout-if-you-want', 
     markup: result.body.any-property, 
    }); 

});

+0

"res" là không xác định! – Kasra

+0

Bạn phải đặt nó vào một tuyến đường trong 'app.get ('/', auth.protected, function (req, res) { \t });' –

+0

Chỉnh sửa và cập nhật mã. – Kasra