我遵循一个角度教程,因为我的服务中使用的链接自教程编写后发生了变化,我很困惑如何在params中使用第二个参数,这是api.openweathermap现在需要的appid .ORG。
function weatherFactory($http) {
return {
getWeather: function(city, country) {
var query = city + ', ' + country;
var key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
return $http.get('http://api.openweathermap.org/data/2.5/weather?', {
params: {
q: query,
appid: key
}
}).then(function(response) {
// //then() returns a promise which
// is resolved with return value of success callback
return response.data.weather[0].description;
});
}
};
}
链接应如下所示:
http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1
所以我把钥匙放在了第二个参数中,但是我不知道如何添加这个&在appid前面,就像在他们的链接示例中一样。 有人可以告诉我该怎么做吗?
答案 0 :(得分:2)
在此demo fiddle中尝试。分隔符&
由AngularJS自动添加。
$http({
method: 'GET',
url: 'http://api.openweathermap.org/data/2.5/weather?',
params: {
appid: 'b1b15e88fa797225412429c1c50c122a1',
q: 'London,uk'
}
}).then(function(response) {
return response.data.weather[0].description;
});
结果:
http://api.openweathermap.org/data/2.5/weather?&appid=b1b15e88fa797225412429c1c50c122a1&q=London,uk
答案 1 :(得分:1)
但我不知道如何在appid前添加此
&
,就像在他们的链接示例中一样
&
是查询字符串的分隔符。将传递给params
的对象转换为查询字符串时,应添加它。
您没有将对象转换为查询字符串。 Angular是。所以什么都不做。 Angular会为你做这件事。
如果您手动转换它,您可以执行以下操作:
var pairs = [];
Object.keys(obj.params).forEach(function (key) {
pairs.push(encodeURIComponent(key) + "=" + encodeURIComponent(params[key]));
});
var query_string = pairs.join("&");
......但如上所述。这是由图书馆为您完成的。