我可以在node.js中使用https.get传递查询吗?

时间:2016-07-13 13:11:53

标签: node.js

我试图在http.get中传递查询。 这有效:

https = require("https");
https.get('https://graph.facebook.com/v2.6/1109550759112324/accounts/test-users?access_token=token',

这导致404:

https = require("https");
https.get({
    host: 'graph.facebook.com',
    path: '/v2.6/1109550759112324/accounts/test-users',
    query: {
        access_token: 'token'
    },

1 个答案:

答案 0 :(得分:0)

执行请求时,Node Core中的HTTPHTTPS库中没有query option。查询字符串实际上是一个名为querystring的独立模块。在该库中,有一个函数stringify(),它将从中获取一个对象并创建一个查询字符串,基本上是您希望https.get()在您的问题中为您做的方式。

您可以将querystring.stringify()https.get()一样使用

const https = require('https');
const qs = require('querystring');

let query = qs.stringify({ access_token: 'token' });

https.get({
    host: 'graph.facebook.com', 
    path: `/v2.6/1109550759112324/accounts/test-users?${query}`,    
}, (res) => {
    console.log(`StatusCode: ${res.statusCode}`);   
    let data = '';

    res.on('data', (chunk) => { data += chunk; });

    res.on('end', () => {
        // Parsing JSON response
        data = JSON.parse(data);

        console.log(`Body: ${JSON.stringify(data, null, 2)}`); 
    });
}).on('error', (err) => {
    console.log(`Error: ${err}`);
});