Node.js请求GET返回原始数据而不是JSON

时间:2018-01-21 13:33:38

标签: json node.js rest api stackexchange-api

我有一个特别有趣的问题,所以我试图使用Stackoverflow搜索/高级API来查询stackoverflow来获取问题。我已经尝试使用PostMan及其返回的JSON但在我的Node.js应用程序中它返回原始数据。

 exports.GetQuestions = function(query,requestify)
 {
   var request = require("request");

   var options = { method: 'GET',
     url: 'https://api.stackexchange.com/2.2/search/advanced',
     qs: 
      { order: 'desc',
        sort: 'activity',
        site: 'stackoverflow',
        q: 'Error: Can\'t find Python executable 
 "C:\\Users\\harig\\AppData\\Local\\Programs\\Python\\Python36\\python.EXE", 
 you can set the PYTHON env variable' },
     headers: 
      { 'postman-token': 'b0b78842-94cd-a0b9-39cc-0e099136900c',
        'cache-control': 'no-cache',
        'Accept': 'application/json' } };

   request(options, function (error, response, body) {
     if (error) throw new Error(error);

     console.log(body);
   });
 }`

我使用postman本身为请求生成了代码,我在不同的API上尝试了它,并且相同的代码工作正常。

我需要帮助来弄清楚如何将JSON作为回应。

以下是回复:

  

缓存控制:私有   content-type:application / json;字符集= utf-8的   content-encoding:gzip   access-control-allow-origin:*   access-control-allow-methods:GET,POST   access-control-allow-credentials:false   x-content-type-options:nosniff   日期:太阳,2018年1月21日16:12:19 GMT   连接:关闭   内容长度:4780

以下是返回的数据示例:

  

U “ZF% - ??ӵmN| F&安培;˚FેN”“DX Ƀ P J ( p U Q N47 1 M . |] t5agA 0 rc g 3 }   + Y染色体长臂/pLMRƜGwtBڍ@ 9(大于sʀ6@我们/Muʮ9,< EM> ML |   S9AߑWr的[ߗAA〜6个U3A | P-ᣖ S”      #vDPXMiȹO{2ns的?    ڝ O_ / ř M3 w ܾ g“ $ (%” r#S Px3 ; 4 ^}܏nSf7U [G7   acȩbҷOqX,8w5SzpPyrg &LT;米; U | AXJ !〜XBK#B5,)W +)+ N [CL()。LC&GT;   okoSHcYc \TW0ƊLM   ݒoN9دHVT RJ   * cPޝ ~l E Ѳ o3Dp Eus侫侫L R n i `+ DF h$ ~377s = W xP #$ CAN1TUb0c ES和B}〜QMM一个| SLY; z8T}Ĵ〜]޽}埃尔] | B * NT ^,   K”   7JIOidm4" NDZ1䞦'[&安培;Ĵ〜6).Gv = GN x4 6nh V o ) ^ಧ 2 ['6 z # / J j+vD xƍ)NQC [CUZ | VH _&GT; gd9v.i UzJ,*JRBtsiӮof^ A3 $ “7N!磅,” 96 @ C.a52'avU9v]升〜kΎԌG藊&LT; 9eN;] TNK? ;cu L u} t q;9 = Y ZK AL. L

1 个答案:

答案 0 :(得分:1)

您收到的回复是gzip压缩,如content-encoding: gzip所示。

在您的选项中设置gzip:true

var options = { method: 'GET',
    gzip: true,
     url: 'https://api.stackexchange.com/2.2/search/advanced',
     qs: 
      { order: 'desc',
        sort: 'activity',
        site: 'stackoverflow',
        q: 'Error: Can\'t find Python executable 
 "C:\\Users\\harig\\AppData\\Local\\Programs\\Python\\Python36\\python.EXE", 
 you can set the PYTHON env variable' },
     headers: 
      { 'postman-token': 'b0b78842-94cd-a0b9-39cc-0e099136900c',
        'cache-control': 'no-cache',
        'Accept': 'application/json' } };