#meteor #meteorite #stackexchange-api
#meteor #meteorite #stackexchange-api
Вопрос:
Я попытался вызвать stackexchange api со стороны клиента, используя приведенный ниже код, он работает нормально
HTTP.call("GET",questionsURL,{params:{site:"stackoverflow",key:key,function(e,res)
{
if(e)
{
console.log("error" e);
}
else
{
//logic
}
});
Когда я попытался вызвать ту же функцию со стороны сервера, она возвращает что-то, что я попытался зарегистрировать, и это показывает следующий результат
Код на стороне сервера является
var futt=new Future();
HTTP.call("GET", userDetailsURL,{params:{site:"stackoverflow",key:key}},function(error,result)
{
futt.return(result);
console.log(result));
});
return futt.wait();
В чем здесь проблема?Кто-нибудь мне поможет, пожалуйста
Ответ №1:
Похоже, проблема в том, что поток с помощью api закодирован в gzip. (Также задокументировано здесь: http://api.stackexchange.com/docs/compression)
Нет способа передать это, если вы сами не распакуете данные.
Возможно, стоит изучить модуль npm, который делает все это за вас, как те, что перечислены по адресу: https://www.npmjs.org/search ?q=stackexchange
Не похоже, что они разрешают несжатые запросы, а Meteor gzip декодирует результаты
Комментарии:
1. Но почему он возвращает распакованный результат, когда мы вызываем его со стороны клиента
2. @user3716227 Ваш веб-браузер способен анализировать данные gzip’d. Серверная сторона
HTTP
не знает, что такое gzip. Если вы хотите, вы можете разветвить http-пакет, чтобы добавить эту функциональность, но это очень утомительно.