写一个通用的http get使用node和express

时间:2017-01-18 14:12:47

标签: node.js http express 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

感谢。

1 个答案:

答案 0 :(得分:0)

简单的方法是使用正文解析器中间件:

使用npm安装body-parser(npm install body-parser --save)

像这样使用

import matplotlib.pyplot as plt
import numpy as np

fig, axs = plt.subplots(5,1)
plt.ion()
plt.show()

def plot(ax, array):
    ax.plot(array)
    plt.draw()

for i in range(5):
    plot(axs[i], np.linspace(-10.*i, 10*i, num=101))

plt.pause(15)

如果您想自己处理身体包,请参阅以下工作代码示例。

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