2011-12-15 43 views
31

Estoy empezando con Node, API y aplicaciones web.Llamadas API simples con Node.js y Express

Entiendo el funcionamiento básico de Node.js y Express, pero ahora quiero comenzar a hacer llamadas a las API de otros servicios y hacer cosas con sus datos.

¿Puede describir las solicitudes HTTP básicas y cómo tomar/analizar las respuestas en el nodo? También estoy interesado en agregar encabezados específicos a mi solicitud (inicialmente estoy usando la API http://www.getharvest.com para analizar los datos de mi hoja de horas).

P.S. Esto parece simple, pero mucha búsqueda no arrojó nada que respondiera mi pregunta. Si esto es una estafa, házmelo saber y lo eliminaré.

Gracias!

+0

¿Qué versión de Node.js está usando? –

+0

La versión del nodo es actualmente 0.4.12. – John

Respuesta

37

No puede buscar cosas con Express, debe usar la biblioteca request de Mikeal para ese propósito específico.

La API para esa biblioteca es muy simple:

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

Editar: Usted es mejor de utilizar esta biblioteca en lugar del predeterminado http uno porque tiene una API mucho más agradable y algunas funciones más avanzadas (que incluso admite cookies).

+0

¿me puede decir que es necesario finalizar la solicitud, como si usáramos '.end()' para la solicitud http? – Karthikeyan

+0

Creo que eso solo es necesario para el cliente http nativo. 'request' hace eso por usted y expone una interfaz más amigable. – alessioalex

4

Usted puede utilizar el cliente 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 
}); 

Además, se puede establecer cabeceras como se describe en el api documentation:

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

En caso de que alguien más se encuentre con esto, este método está en desuso. –

2

Obligatorio instalar dos paquetes.

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

salida

enter image description here

+0

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

Cuestiones relacionadas