2011-12-15 21 views
31

Sono appena iniziato con Node, API e applicazioni Web.Chiamate API semplici con Node.js ed Express

Capisco il funzionamento di base di Node.js e Express, ma ora voglio iniziare a fare chiamate alle API di altri servizi e fare cose con i loro dati.

Potete delineare le richieste HTTP di base e come catturare/analizzare le risposte nel nodo? Sono anche interessato ad aggiungere intestazioni specifiche alla mia richiesta (inizialmente sto usando l'API http://www.getharvest.com per scricchiolare i dati del mio foglio di lavoro).

P.S. Sembra semplice, ma molte ricerche non hanno rivelato nulla che rispondesse alla mia domanda. Se questo è dupe, fammi sapere e cancellerò.

Grazie!

+0

Quale versione di Node.js stai usando? –

+0

La versione del nodo è attualmente 0.4.12. – John

risposta

37

Non è possibile recuperare materiale con Express, è necessario utilizzare la libreria request di Mikeal per lo scopo specifico.

L'API per quella libreria è molto semplice:

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: Sei meglio di usare questa libreria invece della http default perché ha un API molto più bello e alcune funzioni più avanzate (si supporta anche i cookie).

+0

puoi dirmi, è necessario terminare la richiesta, come se usassimo '.end()' per la richiesta http? – Karthikeyan

+0

Penso che sia richiesto solo per il client nativo http. 'request' lo fa per te ed espone un'interfaccia più amichevole. – alessioalex

4

È possibile utilizzare il client 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 
}); 

Inoltre, è possibile impostare le intestazioni come descritto nel api documentation:

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

Nel caso in cui qualcun altro si imbatta in questo, questo metodo è deprecato. –

2

richiesto installare due pacchetti.

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

uscita

enter image description here

+0

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

Problemi correlati