Я абсолютно новичок в AngularJS и изучаю учебник, который показывает, как получить доступ к этому внешнему API прогноза погоды: http://openweathermap.org/forecast для получения и использования информации о погоде.
Итак, в моем приложении у меня есть такой контроллер:
weatherApp.controller('forecastController', ['$scope', '$resource', '$routeParams', 'cityService', function($scope, $resource, $routeParams, cityService) {
// It contain the city selected in the view:
$scope.city = cityService.city;
$scope.days = $routeParams.days || 2;
$scope.weatherAPI = $resource("http://api.openweathermap.org/data/2.5/forecast/daily",
{ APPID: 'MY_PERSONAL_KEY',
callback: "JSON_CALLBACK",
cnt: 5
},
{ get: { method: "JSONP" }});
$scope.weatherResult = $scope.weatherAPI.get({ q: $scope.city, cnt: $scope.days });
$scope.convertToFahrenheit = function(degK) {
return Math.round((1.8 * (degK - 273)) + 32);
}
$scope.convertToDate = function(dt) {
return new Date(dt * 1000);
};
}]);
И я нахожу некоторые трудности, чтобы понять, как именно называется служба и какая информация требуется.
Итак, из того, что я понимаю (но я абсолютно не уверен в этом, поэтому поправьте меня, если я сделаю неправильное утверждение), у меня есть следующая ситуация:
1) В контроллер я ввожу службу $resource, предоставляемую Angular, которая, насколько я понимаю, является объектом, который я могу использовать для удобного взаимодействия с веб-службой RESTful.
Итак, по этой строке:
$scope.city = cityService.city;
Я помещаю город (вставленный пользователем в представление) в свойство city $scope этого контроллера, и он будет пользователем в качестве одного из параметров, используемых для запрос веб-сервиса.
Затем я создаю свойство weatherAPI для объекта $scope, которое, по моему мнению, должно представлять способ доступа к этому ресурсу.
$scope.weatherAPI = $resource("http://api.openweathermap.org/data/2.5/forecast/daily",
{ APPID: 'MY_PERSONAL_KEY',
callback: "JSON_CALLBACK"
},
{ get: { method: "JSONP" }});
Итак, я думаю, что weatherAPI — это объект resource, созданный службой $resource (или я что-то упустил?).
На этом я установил URL-адрес веб-службы (http://api.openweathermap.org/data/2.5/forecast/daily) и пару объектов JSON, а именно:
{
APPID: 'MY_PERSONAL_KEY',
callback: "JSON_CALLBACK"
},
в котором я объявляю поле APPID, которое является моим личным ключом, для использования ключа и поля обратного вызова: "JSON_CALLBACK". Что именно представляет это поле обратного вызова?
И этот второй объект:
{получить: {метод: "JSONP"}}
Хорошо, роль этих двух объектов для меня довольно неясна.
Что именно определить? Мне кажется, что что-то связано с безопасностью моего приложения, но я абсолютно в этом не уверен
Наконец, он извлекает данные из веб-службы:
$scope.weatherResult = $scope.weatherAPI.get({ q: $scope.city, cnt: $scope.days });
где я думаю, что я просто передаю 2 параметра (что-то вроде ?q=value&?cnt=value классического HTTP-запроса)