AngularJS $ http GET调用得到“无法GET / [object%20Object]”错误

时间:2017-06-27 18:23:28

标签: javascript angularjs api http request

我很困惑为什么会这样。我对AngularJS / JS相当新,所以请耐心等待。我想创建一个简单的辅助项目来帮助我学习如何烹饪,所以我使用的食谱数据库API将Yummly用于获取配料和其他信息。

以下是文档:https://developer.yummly.com/documentation

我尝试将api密钥和ID放在URL中,因为API说我可以。我也尝试将它放在HTTP头中,因为API也说我可以。我在邮递员中尝试了两种方法,但两种方法都有效,但我的代码中都没有。我收到错误:无法GET / [object%20Object]。所以我迷路了。或许来自文档中“如何使用GET方法”的描述是原因?:

不要忘记对参数名称和值进行URL编码(即[和]成为%5B和%5D)。我不明白前面这句话......

这是我的代码。非常感谢。非常感谢!

  angular.module("app", [])
.controller('AppController', ['$scope', '$http', function ($scope, $http) {
 $scope.greeting = 'Hola!';

$scope.getRecipe = function(){
  $http.get({
    url: 'http://api.yummly.com/v1/api/recipes?q=onion+soup',
    method: 'GET',
    headers: {
        'X-Yummly-App-ID':'myID (secret)',
        'X-Yummly-App-Key':'myKey (secret)'
    }
  }).success(function(response) {
      console.log("I got the response.");
    }).error(function(error) {
      console.log("failed", error);
    })
}
}]);

1 个答案:

答案 0 :(得分:0)

如果首选$http.get,则代码为:

$http.get('http://api.yummly.com/v1/api/recipes', {
  params: {
    q: 'onion+soup'
  }
  headers: {
    'X-Yummly-App-ID':'myID (secret)',
    'X-Yummly-App-Key':'myKey (secret)'
  }
}).success(function(response) {
  console.log("I got the response.");
}).error(function(error) {
  console.log("failed", error);
})

根据官方document$http.get的语法是:

  

获取(网址,[配置]);

     

执行GET请求的快捷方式。

$http.get的第一个参数是一个URL字符串。如果传递了一个对象(如问题中所述),它将被转换为字符串,这就是为什么您将请求发送到/[object%20Object] - [object%20Object]toString()配置对象的结果。

不要忘记对参数名称和值进行URL编码(即[和]成为%5B和%5D)。我不理解前面这句话......

不要担心。这将自动处理。如果上面q的值为'onion+soup[xxx]',则会将其编码为'onion%2Bsoup%5Bxxx%5D'