我很困惑为什么会这样。我对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);
})
}
}]);
答案 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'
。