我不明白为什么会这样。我对angularjs/js还不太熟悉,所以请容忍我。我想创建一个简单的辅助项目,将有助于我学习如何烹饪,所以我正在使用一个食谱数据库api caled yummly,将获得食谱与配料和其他信息。
这是文档:https://developer.yummly.com/documentation
我试着把api密钥和id放在url中,正如api所说的那样。我还试着把它放到http头中,因为api也说我可以。我在邮递员这两个职位都试过了,但在我的代码里都没有。我得到错误:无法获取/[对象%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);
    })
}
}]);

最佳答案

如果首选$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);
})

根据官方的说法,$http.get的语法是:
获取(url,[配置]);
执行get请求的快捷方式方法。
$http.get的第一个参数是url字符串。如果传递了一个对象(如问题中所述),它将被转换为字符串,这就是为什么发送到/[object%20Object]--[object%20Object]的请求是配置对象的toString()结果。
不要忘记对参数名和值进行url编码(即,[和]变成%5b和%5d)。我不明白前面这句话,所以…
别担心。这将自动处理。如果上面q的值是'onion+soup[xxx]',则它将被url编码为'onion%2Bsoup%5Bxxx%5D'

关于javascript - AngularJS $ http GET调用得到“无法获取/[object%20Object]”错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44787328/

10-11 08:37
查看更多