为什么我在meteorjs中使用HTTP.call时从AlchemyAPI获得'invlid-api-key'?

时间:2016-03-18 09:19:26

标签: meteor ibm-watson alchemyapi

我试图在我的流星应用程序中使用AlchemyAPI来获取一段文字的情绪。我正在使用HTTP建议使用API​​建议的'POST'来进行服务器到服务器的调用,但是我得到了一个'invalid-api-key'响应。

var alchemyURL = Meteor.settings.alchemyUrl;
var postData = {
  'apikey': Meteor.settings.alchemyUrl,
  'text': txt,
  'outputMode': 'json'
};
var options = {
  data: postData
};

var sentimentData = HTTP.call('POST', alchemyURL, options);

console.log(sentimentData);

我已经找到了答案,因此将其发布在下面。

1 个答案:

答案 0 :(得分:3)

事实证明,Meteor的HTTP包需要被赋予用于在数据上实现表单url-encoding的标头。此外,数据对象需要在'params'中传递,而不是在'data'中传递。下面给出了要使用的正确代码段。

var alchemyURL = Meteor.settings.alchemyUrl;
var postData = {
  'apikey': Meteor.settings.alchemyUrl,
  'text': txt,
  'outputMode': 'json'
};
var options = {
  params: postData,
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  } 
};

var sentimentData = HTTP.call('POST', alchemyURL, options);

console.log(sentimentData);