$http
faz 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
, delete
mé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 $http
retorna promise
enquanto $resource
retorna 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
.