0

Je suis absolument nouveau dans AngularJS et j'étudie un tutoriel qui montre comment accéder à cette API de prévision météo externe: http://openweathermap.org/forecast pour récupérer et utiliser les informations météo.

Ainsi, dans mon application, j'ai un contrôleur comme ceci:

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); 

    }; 

}]); 

Et je trouve des difficultés tho comprendre comment exactement le service est appelé et les informations sont nécessaires.

D'après ce que je comprends (mais je ne suis absolument pas sûr si vous me corrigerez si je fais l'affirmation erronée) J'ai la situation suivante:

1) Dans le contrôleur j'injecte la ressource de $ service fourni par Angular que d'après ce que j'ai compris est un objet que je peux utiliser pour une interaction de service web RESTful conviviale.

donc par cette ligne:

$scope.city = cityService.city; 

Je mets une ville (inséré par l'utilisateur dans la vue) dans la ville propriété de la portée de $ de ce contrôleur et ce sera l'utilisateur comme l'un des paramètres utilisés pour la requête webservice.

Puis-je créer la weatherAPI propriété sur la portée $ objet que je pense que devrait représenter le moyen d'accéder à cette ressource

$scope.weatherAPI = $resource("http://api.openweathermap.org/data/2.5/forecast/daily", 
            { APPID: 'MY_PERSONAL_KEY', 
            callback: "JSON_CALLBACK" 
            }, 


            { get: { method: "JSONP" }}); 

Je pense donc que weatherAPI est une ressource objet créé par le $ ressource service (ou ai-je oublié quelque chose?).

Sur cela, je mis l'URL du service Web (http://api.openweathermap.org/data/2.5/forecast/daily) et un couple d'objets JSON, ceux-ci:

{ 
    APPID: 'MY_PERSONAL_KEY', 
    callback: "JSON_CALLBACK" 
}, 

dans lequel je déclare le APPID champ qui est ma clé personnelle d'utiliser la clé et le rappel : champ "JSON_CALLBACK". Que représente exactement ce champ callback?

Et ce deuxième objet:

{get: {méthode: "JSONP"}}

Ok, la roole de ces 2 objets pour moi sont assez obscurs.

Que définir exactement?Il me semble que sont quelque chose lié à la sécurité de ma candidature, mais je ne suis absolument pas sûr de ce

finnally il récupérer des données du service Web par:

$scope.weatherResult = $scope.weatherAPI.get({ q: $scope.city, cnt: $scope.days }); 

où je Thonk que je suis tout simplement passant le 2 paramètres (qui sont quelque chose comme? q = valeur &? cnt = valeur d'un HTTPRequest classique)

Répondre

0

Je pense donc que weatherAPI est un objet de ressource creted par le service des ressources $ (ou suis-je manque quelque chose ?).

Non, rien ne vous échappe. weatherAPI est exactement ce que vous pensez qu'il devrait être.

dans lequel je déclare le champ APPID qui est ma clé personnelle pour utiliser la clé et le rappel: champ "JSON_CALLBACK". Qu'est-ce qui représente exactement ce champ de rappel?

callback Ce champ est simplement un paramètre GET par défaut transmis à l'API à chaque requête. Il est défini ici, vous n'avez donc pas besoin de le transmettre à chaque fois pour demander quelque chose à l'API.

Qu'est-ce qui définit exactement? Il me semble que quelque chose sont liés à la sécurité de ma candidature, mais je ne suis absolument pas sûr de ce

Le troisième paramètre passé dans $resource appel est une définition des méthodes disponibles sur votre API.

Dans l'objet externe, la clé est le nom de la méthode. C'est juste le nom sur lequel cette méthode sera disponible. value est un objet de paramétrage pour cette méthode, dans ce cas il ne fait que spécifier le type de votre méthode, qui est "JSONP". JSONP est un type de requête particulier, il ne peut s'agir que d'une requête "GET", les navigateurs n'autoriseront pas "POST" ici. JSONP doit retourner un appel de fonction simple, en lui passant un paramètre, JSON avec des données de résultat. Cette fonction sera appelée sur votre JavaScript. JSONP est juste une solution de contournement pour effectuer des appels intersites.