如何在Node.js中进行获取请求

时间:2019-05-02 17:15:02

标签: node.js http curl parameters request

我正在尝试获取请求,以使用户在服务器上的频道中联机,但是我总是向服务器中的所有用户公开。

我已经使用了请求模块,但是它不起作用,似乎它没有在请求中传递参数“ _id”

卷曲

curl -s -G \
          -H "X-Auth-Token: Qv5vMPB_6aMCSv5ayQAbQCXkSsBzra_K6BbAqc7S0Fr" \
          -H "X-User-Id: 34YYb2cqqDaFz53ib" \
          -H "Accepts: application/json" \
          --data-urlencode 'query={"_id": "FC77kqfNrH39wEaKG"}' \
          http://localhost:3001/api/v1/channels.online

我的专家结果

{
  "online": [
    {
      "_id": "D539dgygpWrYrNyFz",
      "username": "tranhoang"
    },
    {
      "_id": "34YYb2cqqDaFz53ib",
      "username": "mybot"
    }
  ],
  "success": true
}

代码使用请求模块

var request = require('request');

var headers = {
    'X-Auth-Token': 'Qv5vMPB_6aMCSv5ayQAbQCXkSsBzra_K6BbAqc7S0Fr',
    'X-User-Id': '34YYb2cqqDaFz53ib',
    'Accepts': 'application/json'
};

var options = {
    url: 'http://localhost:3001/api/v1/channels.online',
    headers: headers,
    form: {
        query: '{"_id": "FC77kqfNrH39wEaKG"}'
    }
};

function callback(error, response, body) {
    if (!error && response.statusCode == 200) {
        console.log(body);
        console.log(response);
    }
}

request(options, callback);

和结果

{
  "online": [
    {
      "_id": "D539dgygpWrYrNyFz",
      "username": "tranhoang"
    },
    {
      "_id": "34YYb2cqqDaFz53ib",
      "username": "mybot"
    },
    {
      "_id": "DkiEXfaXRA5EffnHb",
      "username": "sp2"
    }
  ],
  "success": true
}

sp2没有加入格式为“ _id”的频道,我该怎么办,请帮帮我!

1 个答案:

答案 0 :(得分:0)

要使用GET模块在​​Node.js中发出HTTP request请求,您不需要form对象中的options。相反,qs中的options是正确的选择。

代码如下:

var request = require('request');

var headers = {
  'X-Auth-Token': 'Qv5v...S0Fr',
  'X-User-Id': '34YY...53ib',
  'Accepts': 'application/json'
};

var options = {
  uri: 'http://localhost:3001/api/v1/channels.online',
  headers: headers,
  qs: {
    query: {"_id": "FC77kqfNrH39wEaKG"}
  },
  method: 'GET'
};

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log(body);
    console.log(response);
  }
}

request(options, callback);