我不明白为什么会这样。我对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/