$http

Pour gérer les échanges de données avec le serveur.

S'appuie sur l'API deferred/promise (différé/annoncé)

Service qui facilite la communication avec un serveur HTTP en utilisant :
  • soit l'objet XMLHttpRequest du navigateur,
  • soit JSONP : JSON with padding. C'est une technique de communication en JS qui permet de contourner la règle de même origine, c'est à dire d'obtenir des données d'un serveur situé dans un autre domaine. La  règle de même origine (same origin policy) est une principe de sécurité des langages de programmation côté navigateur (par ex. JS) qui autorise les scripts de pages provenant d'un même site à accéder mutuellement et sans restriction à leurs méthodes et propriétés, mais l'interdit en dehors de ce site. Cette règle s'applique aussi à XMLHttpRequest et à robots.txt. Cette règle garantit par exemple qu'une page d'un site ne peut accéder aux cookies générés par une page d'un autre site (les cookies contiennent souvent des informations de connexion qui doivent être protégées).
Remarques :
  • Pour tester des applis qui utilisent $http, voir le simulateur (mock) $httpBackend.
  • Pour un niveau d'abstraction plus élevé, voir le service $resource.
  • L'API $http est basée sur les APIs deferred/promise fournies par le service $q. Pour une utilisation experte, il est nécessaire de connaitre ces APIs et les garanties qu'elles offrent.
$http :
  • prend en argument : un objet de configuration contenant la commande (get, post...), l'url à atteindre,
  • retourne une promise qui a deux méthodes $http.success et .error, dans lesquelles on place des fonctions de rappel.
Une promise est une API qui fournit un objet résultat d'une requête asynchrone et qui, par conséquent, peut n'être pas complet au moment où on y accède car la requête n'est pas achevée. Cette API permet à des composants de retourner des promises utilisables d'une façon prédictible. Elle fournit aussi un objet fondamental qui permet de développer des extensions de langage de programmation facilitant le codage des opérations asynchrones.