$httpfaz uma chamada AJAX de uso geral, na qual geral significa que pode incluir API RESTful mais API não RESTful .
e $resourceé especializado para essa parte RESTful .
Restful Api veio a prevalecer nos últimos anos porque o URL é melhor organizado em vez do URL aleatório composto pelos programadores.
Se eu usar uma API RESTful para construir o URL, seria algo como /api/cars/:carId.
$resource maneira de buscar dados
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');
}]);
Isto lhe dará um objeto de recurso , que é acompanhado com get, save, query, remove, deletemétodos automaticamente.
$http maneira de buscar dados
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...
}
Veja como precisamos definir cada operação comum na API RESTFul . Também uma diferença é que $httpretorna promiseenquanto $resourceretorna um objeto. Também existem plugins de terceiros para ajudar o Angular a lidar com a API RESTFul como restangular
Se a API é algo parecido /api/getcarsinfo. Tudo o que resta para nós é usar $http.