2010-11-28 11 views
15

Comment puis-je faire une demande de Http avec Node.js qui est équivalent à ce code:Demande HTTP avec noeud?

curl -X PUT http://localhost:3000/users/1 

Répondre

22

Utilisez le http client.

Quelque chose le long de ces lignes:

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 
}); 
0
var http = require('http'); 
var client = http.createClient(1337, 'localhost'); 
var request = client.request('PUT', '/users/1'); 
request.write("stuff"); 
request.end(); 
request.on("response", function (response) { 
response.on('data', function (chunk) { 
console.log('BODY: ' + chunk); 
}); 
}); 
+0

quelqu'un a une idée, comment gérer le délai d'attente. Si le serveur ne répond pas dans ce cas? commentez s'il vous plaît. maddy

35

Pour d'autres googler cette question, la réponse acceptée n'est plus correcte et a été désapprouvée.

La méthode correcte (de cette écriture) est d'utiliser la méthode de http.request comme décrit ici: nodejitsu example

Exemple de code (de l'article ci-dessus, modifié pour répondre à la question):

var http = require('http'); 

var options = { 
    host: 'localhost', 
    path: '/users/1', 
    port: 3000, 
    method: 'PUT' 
}; 

callback = function(response) { 
    var str = ''; 

    //another chunk of data has been recieved, so append it to `str` 
    response.on('data', function (chunk) { 
    str += chunk; 
    }); 

    //the whole response has been recieved, so we just print it out here 
    response.on('end', function() { 
    console.log(str); 
    }); 
} 

http.request(options, callback).end(); 
+0

Je n'aime pas cet exemple, car il ne fait que se connecter à la console. La partie intéressante/difficile est cependant de traiter la chaîne de réponse (asynchrone) – Sebastian

+0

Je n'aime pas l'exemple, car il ne montre pas comment attacher un objet json au corps du message – joshua

+12

ummmm .... j'aime cet exemple. changer console.log à response.write() n'est pas si difficile (ou intéressant) les gars, et l'OP n'a rien demandé à propos de l'attachement d'un objet json, posez votre propre question si celle-ci ne correspond pas à vos besoins – Landon