The $http service is included in the main AngularJS module and it is the primary means of sending and receiving external data.
Details of the $http service can be found here: https://docs.angularjs.org/api/ng/service/$http
GET Request
The following is an example of a get request using API that has been deprecated recently:
var myApp = angular.module('myApp', []);
myApp.controller('mainController', ['$scope', '$filter', '$http', function ($scope, $filter, $http) {
$http.get('/api')
.success(function (result) {
$scope.rules = result;
})
.error(function (data, status) {
console.log(data);
});
}]);
Under the new API the request would be made as shown next. In this case the $http service (function) takes a configuration object as an argument. The API link above mentions all the properties in the configuration object. The resulting object has a then function that takes two callback functions as arguments: the first function handles successful requests and the second function handles request errors.
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
POST Request
Here we have a POST request under the previous API:
var myApp = angular.module('myApp', []);
myApp.controller('mainController', ['$scope', '$filter', '$http', function ($scope, $filter, $http) {
$scope.newRule = '';
$scope.addRule = function () {
$http.post('/api', { newRule: $scope.newRule })
.success(function (result) {
console.log(result);
$scope.rules = result;
$scope.newRule = '';
})
.error(function (data, status) {
console.log(data);
});
};
}]);
In order to submit the request the newRule variable would be bound to an input element using the ng-model directive. The addRule() function would be linked to an anchor element using the ng-click directive:
Add rule: <input type="text" ng-model="newRule" /> <a href="#" class="btn btn-default" ng-click="addRule()">Add</a>
With the new API the POST request would be submitted as follows:
var req = {
method: 'POST',
url: 'http://example.com',
headers: {
'Content-Type': undefined
},
data: { test: 'test' }
}
$http(req).then(function(){...}, function(){...});
