Originally published at: http://www.sitepoint.com/api-calls-angularjs-http-service/
Nowadays, it is commonplace for web apps to communicate with each other via APIs. For example, when you buy movie tickets online, the movie ticket web site uses a remote API to verify your credit card information is correct. In this tutorial I will examine how AngularJS can be used to make HTTP requests to a remote API and how to handle the API’s JSON response so that the view is updated.
Staying with the movie theme, I will demonstrate this by building a movie browser called Fastr, which will fetch a variety of different information about any movie you care to enter. In addition to AngularJS, Fastr will be built using Bootstrap for styling and Animate.css for some snazzy effects.
This is what we’ll end up with:
The Project Structure
We will be keeping the code in a modular structure as follows:
css/ animate.min.css bootstrap.min.css style.css js/ angular.min.js app.js partials/ main-info.html related-results.html index.html
The file index.html will contain the main view for our app. The majority of it is boilerplate, but let’s examine where the action takes place:
<div class="input-group search-bar"> <input type="text" ng-model="search" ng-change="change()" placeholder="Enter full movie name" /> ... </div> <div id="main-info" ng-include="'partials/main-info.html'"> </div> <div id="related-results" ng-include="'partials/related-results.html'"> </div>
As you can see, we have used
ng-model to bind the input field (where the users will enter the movie name) to the
search model (which we will declare in our controller). We have also used the
ng-change directive to ensure that every time the input changes a
change function will be called in our controller. This function will be responsible for initiating contact with the remote API.
related-results divs will be used to display information about the current movie and a list of related movies respectively. The information will be displayed in partials which are fetched, compiled and included by the