Node.js 请求 GET 返回原始数据而不是 JSON
Node.js Request GET returning raw data instead of JSON
我有一个特别有趣的问题,所以我尝试使用 Whosebug Search/Advanced API 查询 Whosebug 以获取问题。我已经尝试使用 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: 'Whosebug',
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);
});
}`
我使用邮递员本身为请求生成了代码,我在不同的 API 上尝试过,同样的代码工作正常。
我需要帮助来弄清楚如何获得 JSON 作为响应。
这是回复:
cache-control: private
content-type: application/json; charset=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
date: Sun, 21 Jan 2018 16:12:19 GMT
connection: close
content-length: 4780
这是返回的数据示例:
���������U����"�z�f%��-??ӵm��N�|�f&��fે�n�.""��DX�Ƀ�P��J�(�p�U�Q�N47 �1�M�.�|]�t5agA��0�rc �g�3��}
+�Y�q/�pL��M�RƜGwt�B��ڍ�@���9(>s��ʀ6�@�w���e/��Mu�ʮ��9,�ML|
�s9�a���ߑW�r�[����ߗa�������a�~6��>ͦ����u�3���a�|P-�ᣖ�S'
�
�#v�D�PXM�i��ȹ��O�{2N�s��?
����ڝ���O_������/ ���ř��M3��w�ܾ����g"�� ���$�(%"�r#S�Px3��;?4^}��n�S�f7U[���g7�
a�cȩbҷ�Oq����X,8w�5Szp�P�y���rg�<�������m�;�u���|��aXJ��!��~X�bK�#�b5���,)W+����)������+n[cl()�����lC>
okoSHcY��c\�TW0ƊLM
��ݒ���oN9دhV���t��rj��
*�cPޝ�~l���E�́Ѳ�o3Dp�Eus侫��L��R�n��i�`+����DF���h $~377s=��W��xP��#�CAN�1�T�Ub0c$�e����S���&���B�}�~��Q�������m��m�������a�|���sL�Y;z8��T}�j~�]}���El�����]|��B�����*nt�^�,�����
k'
7�J�IO�i�d�m�4"�N���DZ��1䞦'�[�&�j���~�6�).G��v=��gn��x4�6nh�����V��o�)���^ಧ�2����['6����z� �#�/���J���j+vD�xƍ)N����qC[C���U��Z|�����vh���_��>�gd�9��v���.��i�U�zJ��,�*J��RBt�s��iӮo��f�^A3��$�"7�N��!�l�b,"��96�@�������C���.��a�52'a�v�U��9��v]�l�~kΎ��ԌG�藊<9�eN;]t��n�k?;cu� L�u}�t���q;৯��=�����Y��ZK������AL.�L
您收到的响应是 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: 'Whosebug',
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' } };
我有一个特别有趣的问题,所以我尝试使用 Whosebug Search/Advanced API 查询 Whosebug 以获取问题。我已经尝试使用 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: 'Whosebug',
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);
});
}`
我使用邮递员本身为请求生成了代码,我在不同的 API 上尝试过,同样的代码工作正常。
我需要帮助来弄清楚如何获得 JSON 作为响应。
这是回复:
cache-control: private content-type: application/json; charset=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 date: Sun, 21 Jan 2018 16:12:19 GMT connection: close content-length: 4780
这是返回的数据示例:
���������U����"�z�f%��-??ӵm��N�|�f&��fે�n�.""��DX�Ƀ�P��J�(�p�U�Q�N47 �1�M�.�|]�t5agA��0�rc �g�3��} +�Y�q/�pL��M�RƜGwt�B��ڍ�@���9(>s��ʀ6�@�w���e/��Mu�ʮ��9,�ML| �s9�a���ߑW�r�[����ߗa�������a�~6��>ͦ����u�3���a�|P-�ᣖ�S' � �#v�D�PXM�i��ȹ��O�{2N�s��? ����ڝ���O_������/ ���ř��M3��w�ܾ����g"�� ���$�(%"�r#S�Px3��;?4^}��n�S�f7U[���g7� a�cȩbҷ�Oq����X,8w�5Szp�P�y���rg�<�������m�;�u���|��aXJ��!��~X�bK�#�b5���,)W+����)������+n[cl()�����lC> okoSHcY��c\�TW0ƊLM ��ݒ���oN9دhV���t��rj�� *�cPޝ�~l���E�́Ѳ�o3Dp�Eus侫��L��R�n��i�`+����DF���h $~377s=��W��xP��#�CAN�1�T�Ub0c$�e����S���&���B�}�~��Q�������m��m�������a�|���sL�Y;z8��T}�j~�]}���El�����]|��B�����*nt�^�,����� k' 7�J�IO�i�d�m�4"�N���DZ��1䞦'�[�&�j���~�6�).G��v=��gn��x4�6nh�����V��o�)���^ಧ�2����['6����z� �#�/���J���j+vD�xƍ)N����qC[C���U��Z|�����vh���_��>�gd�9��v���.��i�U�zJ��,�*J��RBt�s��iӮo��f�^A3��$�"7�N��!�l�b,"��96�@�������C���.��a�52'a�v�U��9��v]�l�~kΎ��ԌG�藊<9�eN;]t��n�k?;cu� L�u}�t���q;৯��=�����Y��ZK������AL.�L
您收到的响应是 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: 'Whosebug',
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' } };