节点获取POST请求的问题

时间:2018-04-15 12:37:27

标签: javascript node.js node-fetch

在邮递员中,我可以成功地提出这个要求:

enter image description here

得到这个回复:

enter image description here

现在我想在node.js中的server.js文件中执行相同的请求:

 Response {
   size: 0,
   timeout: 0,
   [Symbol(Body internals)]: 
    { body: 
       PassThrough {
         _readableState: [ReadableState],
         readable: true,
         _events: [Object],
         _eventsCount: 2,
         _maxListeners: undefined,
         _writableState: [WritableState],
         writable: false,
         allowHalfOpen: true,
         _transformState: [Object] },
      disturbed: false,
      error: null },
   [Symbol(Response internals)]: 
    { url: 'http://www.sentiment140.com/api/bulkClassifyJson',
      status: 200,
      statusText: 'OK',
      headers: Headers { [Symbol(map)]: [Object] } } }

这不起作用。当我访问localhost时,这是浏览器中显示的内容:5000 / api / sentimenttest:

body

这是控制台输出:

fetch()

由于请求在postman中运行得很好,我认为问题在于节点提取或我使用它的方式,特别是"size":0调用中totals参数的提供方式。似乎API调用不包含我想要的内容,因为在浏览器中它显示res = df.groupby(['website', 'IP']).size().reset_index() s = df.groupby('website').size() res['totals'] = res['website'].map(s) res = res.sort_values('totals', ascending=False) print(res) # website IP 0 totals # 0 website.com 1.1.1.1 4 5 # 1 website.com 1.1.1.2 1 5 # 2 website1.com 1.1.1.1 2 4 # 3 website1.com 1.1.1.3 2 4 # 4 website2.com 1.1.1.4 1 1

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:6)

你需要等待json。

var sentiments = await fetch(SEN_URL, {method: "POST", body: {"data": [{"text": "I love you"}, {"text": "I hate you"}]}})
//Here 
await sentiments.json()

您也可以使用JSON.stringify()为正文发出请求。并且管理你的js对象会更容易。像这样:

var data = {data: [{text: "I love you"}, {text: "I hate you"}]};
var body = JSON.stringify(data);
var sentiments = await fetch(SEN_URL, { method: "POST", body: body });