2017-01-18 4 views
0

Ich habe den folgenden Code:einen Allzweck-Schreiben http get Knoten mit und Express

var getRequest=function(options){ 
    var body=''; 
    var req = http.get(options,function(response){ 
    response.on('data', function(chunk) { 
     body+=chunk; 
    }).on('end', function(chunk) { 
     console.log("body"); 
     return JSON.parse(body); 

    }).on('error',function(error){ 
     console.log("error: "+error.getMessage()); 
    }) 

    }) 
    return req; 

}; 

Was ich versuche zu tun, ein JSON-Objekt von http Optionen übergeben, zB:

var options={ 
     host:'localhost', 
     port:'8080', 
     method:'GET', 
     path:'/stuff' 
      }; 

und senden Sie eine geparste Antwort zurück. Allerdings kann ich das nicht zur Arbeit bringen und ich denke es ist wegen der verschachtelten Funktion und meines Missverständnisses, wie sie funktionieren.

Könnte mir bitte jemand sagen, wie man die Funktion erhält, das Ergebnis von JSON.parse (body) an getRequest zurückzugeben?

TypeError: Converting circular structure to JSON 

danke.

Antwort

0

einfache Art und Weise ist es mit einem Body-Parser-Middleware zu tun:

Installieren Körper-Parser mit npm (NPM Körper-Parser --save installieren)

Verwenden Sie es wie folgt

var bodyParser = require('body-parser'); 
var app = express(); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 

//Now you got access to the body object in request.body 
app.get('/stuff', function(request, response) { 
    response.send(request.body); 
} 

Wenn Sie die Körperpaketen selbst behandeln möchten, hier ist ein Beispiel für Arbeitscode.

var data = []; 
request.on('data', function(chunck) { 
    data.push(chunck); 
}).on('end', function() { 
    data = Buffer.concat(data).toString(); 
    response.send(JSON.parse(data)); 
}).on('error', function(error) { 
    console.log(error); 
    response.status(400).send(error); 
});