$httprealiza 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 $resourceestá 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, deletemé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 $httpdevuelve promisemientras $resourcedevuelve 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.