$http
realiza una llamada AJAX de propósito general, en la que en general significa que puede incluir una API RESTful más una API no RESTful .
y $resource
está especializado para esa parte RESTful .
La API de reposo prevaleció en los últimos años porque la URL está mejor organizada en lugar de una URL aleatoria compuesta por programadores.
Si uso una API RESTful para construir la url, sería algo así /api/cars/:carId
.
$resource
forma de obtener datos
angular.module('myApp', ['ngResource'])
// Service
.factory('FooService', ['$resource', function($resource) {
return $resource('/api/cars/:carId')
}]);
// Controller
.controller('MainController', ['FooService', function(FooService){
var self = this;
self.cars = FooService.query();
self.myCar = FooService.get('123');
}]);
Esto le dará un objeto de recursos , que se acompaña con get
, save
, query
, remove
, delete
métodos automáticamente.
$http
forma de obtener datos
angular.module('myApp', [])
// Service
.factory('FooService', ['$http', function($http){
return {
query: function(){
return $http.get('/api/cars');
},
get: function(){
return $http.get('/api/cars/123');
}
// etc...
}
Vea cómo necesitamos definir cada operación común en la API RESTFul . También una diferencia es que $http
devuelve promise
mientras $resource
devuelve un objeto. También hay complementos de terceros para ayudar a Angular a lidiar con RESTFul API como restangular
Si la API es algo así /api/getcarsinfo
. Todo lo que nos queda es usar $http
.