2011-12-15 22 views
31

Po prostu zaczynam od węzła, interfejsów API i aplikacji internetowych.Proste wywołania interfejsu API za pomocą Node.js i Express

Rozumiem podstawowe funkcje Node.js i Express, ale teraz chcę zacząć nawiązywać połączenia z interfejsami API innych usług i robić rzeczy z ich danymi.

Czy można zarysować podstawowe żądania HTTP i jak pobierać/analizować odpowiedzi w węźle? Interesuje mnie również dodanie konkretnych nagłówków do mojej prośby (początkowo używam interfejsu API http://www.getharvest.com, aby zmniejszyć liczbę danych w moim arkuszu czasu).

P.S. Wydaje się to proste, ale wiele poszukiwań nie znalazło niczego, co odpowiadałoby na moje pytanie. Jeśli to jest dupe, daj mi znać, a ja usunę.

Dzięki!

+0

Jaka wersja node.js używasz? –

+0

Wersja węzła to obecnie 0.4.12. – John

Odpowiedz

37

Nie możesz pobrać rzeczy za pomocą Express, powinieneś użyć biblioteki Mikeala do tego konkretnego celu.

API dla tej biblioteki jest bardzo proste:

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. 
    } 
}) 

Edit: Lepiej z użyciem tej biblioteki zamiast domyślnego http jeden, ponieważ ma o wiele ładniejszy API i niektóre bardziej zaawansowane funkcje (to obsługuje nawet pliki cookie).

+0

czy możesz mi powiedzieć, że jest to konieczne, aby zakończyć żądanie, tak jak będziemy używać ".end()" dla żądania http? – Karthikeyan

+0

Myślę, że jest to wymagane tylko dla natywnego klienta http. 'request' robi to za ciebie i udostępnia przyjazny interfejs. – alessioalex

4

Można używać klienta 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 
}); 

Ponadto, można ustawić nagłówki w sposób opisany w api documentation:

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

W przypadku, gdy ktoś inny natknie się na to, ta metoda jest przestarzała. –

2

Wymagane zainstalować dwa opakowania.

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); 
    } 
}); 

Wyjście

enter image description here

+0

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

Powiązane problemy