2011-12-15 47 views
31

Tôi chỉ mới bắt đầu với Node, API và các ứng dụng web.Cuộc gọi API đơn giản với Node.js và Express

Tôi hiểu các hoạt động cơ bản của Node.js và Express, nhưng bây giờ tôi muốn bắt đầu thực hiện cuộc gọi đến các API của dịch vụ khác và thực hiện các công cụ với dữ liệu của chúng.

Bạn có thể phác thảo các yêu cầu HTTP cơ bản và cách lấy/phân tích cú pháp phản hồi trong Nút không? Tôi cũng quan tâm đến việc thêm tiêu đề cụ thể vào yêu cầu của tôi (ban đầu tôi đang sử dụng API http://www.getharvest.com để làm hỏng dữ liệu trang tính thời gian của mình).

P.S. Điều này có vẻ đơn giản, nhưng rất nhiều tìm kiếm đã không bật lên bất cứ điều gì trả lời câu hỏi của tôi. Nếu đây là lừa đảo, hãy cho tôi biết và tôi sẽ xóa.

Cảm ơn!

+0

Phiên bản nào của Node.js bạn đang sử dụng? –

+0

Phiên bản Node hiện tại là 0.4.12. – John

Trả lời

37

Bạn không thể tìm nạp nội dung bằng Express, bạn nên sử dụng thư viện request của Mikeal cho mục đích cụ thể đó.

API cho thư viện mà là rất đơn giản:

var request = require('request'); 
request('http://www.google.com', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    console.log(body) // Print the google web page. 
    } 
}) 

Chỉnh sửa: Bạn nên sử dụng thư viện này thay vì http mặc định một bởi vì nó có một API đẹp hơn nhiều và một số tính năng cao cấp hơn (nó thậm chí còn hỗ trợ cookie).

+0

bạn có thể vui lòng cho tôi biết, đó là cần thiết để kết thúc yêu cầu, như chúng tôi sẽ sử dụng '.end()' cho yêu cầu http? – Karthikeyan

+0

Tôi nghĩ rằng điều đó chỉ bắt buộc đối với ứng dụng khách HTTP gốc. 'request' thực hiện điều đó cho bạn và cho thấy một giao diện thân thiện hơn. – alessioalex

4

Bạn có thể sử dụng máy khách http:

var http = require('http'); 
var client = http.createClient(3000, 'localhost'); 
var request = client.request('PUT', '/users/1'); 
request.write("stuff"); 
request.end(); 
request.on("response", function (response) { 
    // handle the response 
}); 

Ngoài ra, bạn có thể đặt tiêu đề như mô tả trong api documentation:

client.request(method='GET', path, [request_headers]) 
+23

Trong trường hợp bất kỳ ai khác gặp phải vấn đề này, phương pháp này không được chấp nhận. –

2

Yêu cầu cài đặt hai gói.

npm install ejs 
npm install request 

server.js

var request = require('request'); 
app.get('/users', function(req, res) { 
    request('https://jsonplaceholder.typicode.com/users', function(error, response, body) { 
     res.json(body) 
    }); 
}); 

index.ejs

$.ajax({ 
    type: "GET", 
    url: 'http://127.0.0.1:3000/posts', 
    dataType: "json", 
    success: function(res) { 
     var res_data = JSON.parse(res); 
     console.log(res_data); 
    } 
}); 

Output

enter image description here

+0

res.json (body) oe response.json ... – user269867

Các vấn đề liên quan