2017-01-18 49 views
0

我有以下代碼:使用節點,並表示寫一個通用的HTTP GET

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; 

}; 

我所試圖做的是通過HTTP的選項的JSON對象,如:

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

併發送回解析的響應。但是,我無法得到這個工作,我認爲這是因爲嵌套函數和我對工作方式的誤解。

請有人可以告訴我如何獲得函數返回JSON.parse(body)的結果getRequest?

TypeError: Converting circular structure to JSON 

謝謝。

回答

0

簡單的方法來做到這一點是與身體的解析器中間件:

安裝體分析器與NPM(NPM安裝體解析器--save)

使用方法如下

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

如果你想自己處理身體包裹,這裏是一個工作代碼的例子。

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); 
}); 
相關問題