---
title: "Tutorial: Angular + REST Made Simple"
description: Learn how to get an application up and running and showcases user registration, login, logout, reading/writing records, and calling a third-party API.
image: https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/team-ben-May-07-2024-08-15-48-6708-AM.jpg
---

[![DreamFactory logo](https://cdn.prod.website-files.com/64ed8da8a866be7a702fbae0/68d51994d3678214b54acb60_dreamfactory-navbar-logo.svg)](https://www.dreamfactory.com/)

 Products & Services

[AI Data Gateway](https://www.dreamfactory.com/ai-data-gateway/overview)

[Overview Why DreamFactory exists](https://www.dreamfactory.com/ai-data-gateway/overview) [Data Gov, Comp, Security Policy enforcement at the API layer](https://www.dreamfactory.com/ai-data-gateway/ai-data-governance) [Standard API Layer One contract for every backend](https://www.dreamfactory.com/ai-data-gateway/standard-api-layer) [API Gateway Functionality Routing, auth, rate limits, observability](https://www.dreamfactory.com/ai-data-gateway/api-gateway-functionality) [Deployment & Integration Self-hosted, cloud, hybrid](https://www.dreamfactory.com/ai-data-gateway/on-premise-deployment-and-integration) [Developer Productivity Auto-generated, never hand-coded](https://www.dreamfactory.com/ai-data-gateway/ai-development-accelerated) [AI App Architectures Patterns for RAG, agents, MCP](https://www.dreamfactory.com/ai-data-gateway/enterprise-ai-architectures)

AI Data Models

[AIOpenAI](https://www.dreamfactory.com/use-cases/openai) [GGoogle Gemini](https://www.dreamfactory.com/use-cases/google-gemini) [CAnthropic Claude](https://www.dreamfactory.com/use-cases/anthropic-claude-landing) [LMeta Llama](https://www.dreamfactory.com/use-cases/meta-llama) [MMistral AI](https://www.dreamfactory.com/use-cases/mistral) [CoCohere](https://www.dreamfactory.com/use-cases/cohere)

Services and support

[Quickstart Service Packages Expert-led Quickstarts to production](https://www.dreamfactory.com/services-and-support/quickstart-services-packages)

API Management

[Generate & Manage REST APIs From any database, in seconds](https://www.dreamfactory.com/api-management/generate-rest-apis) [Features Security, scripting, self-hosted & more](https://www.dreamfactory.com/api-management/features) [API Generation The complete guide to auto-generated APIs](https://blog.dreamfactory.com/a-complete-guide-to-api-generation) [API Management Concepts, tools, and best practises](https://blog.dreamfactory.com/what-is-api-management-a-brief-overview-of-api-management-concepts-and-tools?_gl=1*jl0njh*_gcl_au*MjQzMjgwMTc3LjE3ODIzMjI3MzY)

 Use Cases

AI Use Cases

[AI Data Access Secure, governed reads for your LLMs](https://www.dreamfactory.com/use-cases/ai-data-access) [MCP Server Drop-in Model Context Protocol](https://www.dreamfactory.com/use-cases/mcp-server) [Legacy Modernization Wrap mainframes with REST](https://www.dreamfactory.com/use-cases/legacy-modernization) [Data Governance Audit every call, enforce every policy](https://www.dreamfactory.com/use-cases/data-governance)

[Customer Case Studies](https://www.dreamfactory.com/case-studies)

[Energy Modernization](https://www.dreamfactory.com/case-studies/energy-snowflake-modernization) [Government Modernization](https://www.dreamfactory.com/case-studies/government-mainframe-oracle-modernization) [Government Business Intelligence](https://www.dreamfactory.com/case-studies/government-sql-server-bi-analyst-queries) [Manufacturing Modernization](https://www.dreamfactory.com/case-studies/steel-manufacturing-sap-erp-modernization) [Financial Services Investor Portal](https://www.dreamfactory.com/case-studies/financial-services-sql-server-investor-portal) [Non-Profit Partner Data Sharing](https://www.dreamfactory.com/case-studies/non-profit-sql-server-partner-data-sharing) [Professional Services Exec Dashboards](https://www.dreamfactory.com/case-studies/professional-services-erp-dashboards) [Education HR and External Data Sharing](https://www.dreamfactory.com/case-studies/education-student-hr-sql-server-mysql-external-data-sharing)

 Industries

Industries

#### [Healthcare HIPAA-grade APIs across EHR, claims, and labs.](https://www.dreamfactory.com/use-cases/healthcare)

#### [Financial Services Portfolios, partners, and portals on one layer.](https://www.dreamfactory.com/use-cases/financial-services)

#### [Government Modernize mainframes without re-platforming.](https://www.dreamfactory.com/use-cases/government)

#### [Manufacturing SAP, MES, and shop-floor data, governed.](https://www.dreamfactory.com/use-cases/manufacturing)

#### [Spotlight How enterprises run on DreamFactory From healthcare to energy to finance — governance baked into every endpoint. Browse case studies →](https://www.dreamfactory.com/case-studies)

 Connectors

SQL Database

[SQL SQL Server](https://www.dreamfactory.com/connectors/sql-server) [OR Oracle](https://www.dreamfactory.com/connectors/oracle) [PG PostgreSQL](https://www.dreamfactory.com/connectors/postgresql) [My MySQL](https://www.dreamfactory.com/connectors/mysql)

NoSQL & Docs

[Dy DynamoDB](https://www.dreamfactory.com/connectors/dynamodb) [Do DocumentDB](https://www.dreamfactory.com/connectors/azure-documentdb) [Mo MongoDB](https://www.dreamfactory.com/connectors/mongodb) [Cb CouchDB](https://www.dreamfactory.com/connectors/couch-db)

Cloud Warehouses

[S3 S3](https://www.dreamfactory.com/connectors/amazon-s3) [Ab Azureblob](https://www.dreamfactory.com/connectors/azure-blob) [FS FTP/SFTP](https://www.dreamfactory.com/connectors/ftp-sftp) [LS Local Storage](https://www.dreamfactory.com/connectors/local-storage)

C & SaaS

[Sf Salesforce](https://www.dreamfactory.com/connectors/salesforce) [API REST / SOAP](https://www.dreamfactory.com/connectors/soap-to-rest)

[See all 30+ connectors](https://www.dreamfactory.com/connectors)

[Blog](https://blog.dreamfactory.com/)

[FREE 30 Minute Demo](https://www.dreamfactory.com/demo)

[![DreamFactory logo](https://cdn.prod.website-files.com/64ed8da8a866be7a702fbae0/68d51994d3678214b54acb60_dreamfactory-navbar-logo.svg)](https://www.dreamfactory.com/)

![hamburger](https://blog.dreamfactory.com/hubfs/raw_assets/public/dreamfactory/images/megamenu/menu-hamburger.svg) ![close](https://blog.dreamfactory.com/hubfs/raw_assets/public/dreamfactory/images/megamenu/close-menu.svg)

 Back to main menu

 Products & Services

 Use Cases

 Industries

 Connectors

[Blog](https://blog.dreamfactory.com/)

[FREE 30 Minute Demo](https://www.dreamfactory.com/demo)

[AI Data Gateway](https://www.dreamfactory.com/ai-data-gateway/overview)

[Overview Why DreamFactory exists](https://www.dreamfactory.com/ai-data-gateway/overview) [Data Gov, Comp, Security Policy enforcement at the API layer](https://www.dreamfactory.com/ai-data-gateway/ai-data-governance) [Standard API Layer One contract for every backend](https://www.dreamfactory.com/ai-data-gateway/standard-api-layer) [API Gateway Functionality Routing, auth, rate limits, observability](https://www.dreamfactory.com/ai-data-gateway/api-gateway-functionality) [Deployment & Integration Self-hosted, cloud, hybrid](https://www.dreamfactory.com/ai-data-gateway/on-premise-deployment-and-integration) [Developer Productivity Auto-generated, never hand-coded](https://www.dreamfactory.com/ai-data-gateway/ai-development-accelerated) [AI App Architectures Patterns for RAG, agents, MCP](https://www.dreamfactory.com/ai-data-gateway/enterprise-ai-architectures)

AI Data Models

[AIOpenAI](https://www.dreamfactory.com/use-cases/openai) [GGoogle Gemini](https://www.dreamfactory.com/use-cases/google-gemini) [CAnthropic Claude](https://www.dreamfactory.com/use-cases/anthropic-claude-landing) [LMeta Llama](https://www.dreamfactory.com/use-cases/meta-llama) [MMistral AI](https://www.dreamfactory.com/use-cases/mistral) [CoCohere](https://www.dreamfactory.com/use-cases/cohere)

Services and support

[Quickstart Service Packages Expert-led Quickstarts to production](https://www.dreamfactory.com/services-and-support/quickstart-services-packages)

AI Data Models

[Generate & Manage REST APIs From any database, in seconds](https://www.dreamfactory.com/api-management/generate-rest-apis) [Features Security, scripting, self-hosted & more](https://www.dreamfactory.com/api-management/features) [API Generation The complete guide to auto-generated APIs](https://blog.dreamfactory.com/a-complete-guide-to-api-generation) [API Management Concepts, tools, and best practises](https://blog.dreamfactory.com/what-is-api-management-a-brief-overview-of-api-management-concepts-and-tools?_gl=1*jl0njh*_gcl_au*MjQzMjgwMTc3LjE3ODIzMjI3MzY)

AI Use Cases

[AI Data Access Secure, governed reads for your LLMs](https://www.dreamfactory.com/use-cases/ai-data-access) [MCP Server Drop-in Model Context Protocol](https://www.dreamfactory.com/use-cases/mcp-server) [Legacy Modernization Wrap mainframes with REST](https://www.dreamfactory.com/use-cases/legacy-modernization) [Data Governance Audit every call, enforce every policy](https://www.dreamfactory.com/use-cases/data-governance)

[Customer Case Studies](https://www.dreamfactory.com/case-studies)

[Energy Modernization](https://www.dreamfactory.com/case-studies/energy-snowflake-modernization) [Government Modernization](https://www.dreamfactory.com/case-studies/government-mainframe-oracle-modernization) [Government Business Intelligence](https://www.dreamfactory.com/case-studies/government-sql-server-bi-analyst-queries) [Manufacturing Modernization](https://www.dreamfactory.com/case-studies/steel-manufacturing-sap-erp-modernization) [Financial Services Investor Portal](https://www.dreamfactory.com/case-studies/financial-services-sql-server-investor-portal) [Non-Profit Partner Data Sharing](https://www.dreamfactory.com/case-studies/non-profit-sql-server-partner-data-sharing) [Professional Services Exec Dashboards](https://www.dreamfactory.com/case-studies/professional-services-erp-dashboards) [Education HR and External Data Sharing](https://www.dreamfactory.com/case-studies/education-student-hr-sql-server-mysql-external-data-sharing)

Industries

#### [Healthcare HIPAA-grade APIs across EHR, claims, and labs.](https://www.dreamfactory.com/use-cases/healthcare)

#### [Financial Services Portfolios, partners, and portals on one layer.](https://www.dreamfactory.com/use-cases/financial-services)

#### [Government Modernize mainframes without re-platforming.](https://www.dreamfactory.com/use-cases/government)

#### [Manufacturing SAP, MES, and shop-floor data, governed.](https://www.dreamfactory.com/use-cases/manufacturing)

SQL Database

[SQL SQL Server](https://www.dreamfactory.com/connectors/sql-server) [OR Oracle](https://www.dreamfactory.com/connectors/oracle) [PG PostgreSQL](https://www.dreamfactory.com/connectors/postgresql) [My MySQL](https://www.dreamfactory.com/connectors/mysql)

NoSQL & Docs

[Dy DynamoDB](https://www.dreamfactory.com/connectors/dynamodb) [Do DocumentDB](https://www.dreamfactory.com/connectors/azure-documentdb) [Mo MongoDB](https://www.dreamfactory.com/connectors/mongodb) [Cb CouchDB](https://www.dreamfactory.com/connectors/couch-db)

Cloud Warehouses

[S3 S3](https://www.dreamfactory.com/connectors/amazon-s3) [Ab Azureblob](https://www.dreamfactory.com/connectors/azure-blob) [FS FTP/SFTP](https://www.dreamfactory.com/connectors/ftp-sftp) [LS Local Storage](https://www.dreamfactory.com/connectors/local-storage)

C & SaaS

[Sf Salesforce](https://www.dreamfactory.com/connectors/salesforce) [API REST / SOAP](https://www.dreamfactory.com/connectors/soap-to-rest)

[See all 30+ connectors](https://www.dreamfactory.com/connectors)

[![back arrow](https://blog.dreamfactory.com/hubfs/raw_assets/public/dreamfactory/images/orange-arrow.svg) Blog](https://blog.dreamfactory.com/)

# Tutorial: Angular + REST Made Simple

 by Terence Bennett

![calendar icon](https://blog.dreamfactory.com/hubfs/raw_assets/public/dreamfactory/images/calendar-icon.svg) January 9, 2026

Table of contents

RECOMMENDED ARTICLES

- [A Complete Guide to API Generation](https://blog.dreamfactory.com/a-complete-guide-to-api-generation)
- [10 Best API Management Tools](https://blog.dreamfactory.com/what-is-api-management-a-brief-overview-of-api-management-concepts-and-tools)
- [Creating a Microsoft SQL Server API in Less Than 5 minutes with DreamFactory](https://blog.dreamfactory.com/creating-a-microsoft-sql-server-api-in-less-than-5-minutes-with-dreamfactory)
- [Hasura vs. DreamFactory: A Comprehensive Comparison](https://blog.dreamfactory.com/hasura-vs-dreamfactory)
- [Build A Snowflake REST API in Less Than 5 Minutes](https://blog.dreamfactory.com/generate-a-snowflake-rest-api-in-less-than-5-minutes)

![BenBusse](https://blog.dreamfactory.com/hs-fs/hubfs/Imported_Blog_Media/team-ben-May-07-2024-08-15-48-6708-AM.jpg?width=86&height=57&name=team-ben-May-07-2024-08-15-48-6708-AM.jpg) In this tutorial, we’ll show how to set up a simple AngularJS application that uses the [angular-dreamfactory module](https://github.com/dreamfactorysoftware/angular-dreamfactory). We wrote the angular-dreamfactory module to make it extremely simple to call REST services in your DSP from your Angular application. This tutorial explains how to get a simple trivia application up and running and showcases user registration, login, logout, reading and writing database records, and calling a third-party API.

Let’s get started!

## Setting up the app

### Get the trivia app from GitHub

[Download the source code](https://github.com/dreamfactorysoftware/trivia_app) for the demo application from GitHub. It’s a simple app that asks questions about movie trivia and keeps a running score of your results. Get an answer right, get 10 points. Get an answer wrong, lose 10 points. There’s also a cheat button if you can’t get any answers right ;-)

### Get the angular-dreamfactory module from GitHub

[Download the angular-dreamfactory module](https://github.com/dreamfactorysoftware/angular-dreamfactory) from GitHub and unzip it.

### Get a DSP

Before you configure the backend of the application, you need to get a DSP (short for DreamFactory Services Platform). If you don’t already have one, [sign up for a free hosted DSP](https://www.dreamfactory.com/user/register) and log into your account.

You can also install a DSP on your cloud or server of choice from Bitnami [here](https://bitnami.com/stack/dreamfactory).

### Register the app

The DreamFactory Admin Console is where you register your applications and configure all the backend data sources and REST APIs that your app will use. First you need to register the application in your DSP so the trivia app can interact with the DSP on the backend (the app name will be the API key in your app.js file, more on that later).

To register your app, just click on the ‘Apps’ tab and click the ‘Create New App’ button in the upper right hand corner of your screen.

Then enter ‘trivia’ for your app name and select the radio button ‘On a device or remote client / desktop’. Click the ‘Create Application’ button and you're done.

 ![register-app](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/register-app.png)

### Create a table from a JSON file

The DSP comes with a built-in MySQL database and schema editor. To create a new table, click on the ‘Schema’ tab. Then click on the ‘Import JSON Schema’ in the upper righthand corner of the screen and copy the JSON below into the text window. Click the ‘Create Table(s)’ and a table called ‘TriviaScore’ is created for you.

```
 {
  "table": [
    {
      "name": "TriviaScore",
      "label": "TriviaScore",
      "plural": "TriviaScores",
      "field": [
        {
          "name": "id",
          "label": "id",
          "type": "id",
          "size": "11"
        },
        {
          "name": "user",
          "label": "user",
          "type": "integer",
          "size": "11"
        },
        {
          "name": "score",
          "label": "score",
          "type": "integer",
          "size": "11"
        }
      ]
    }
  ]
}
```

The TriviaScore table simply stores each user’s current score. It has three fields: id, user, and score.

Note: You can also easily set up a REST connection to your own SQL or [your own NoSQL](https://blog.dreamfactory.com/NoSQL-No-Problem-MongoDB-Specifics) database and call these APIs from your client app.

### Sign up for a Rotten Tomates API Key

Now you’ll need to go get yourself a free Rotten Tomatoes API key to access movie information. Sign up for a free API key [here](https://developer.rottentomatoes.com/).

### Save Your Rotten Tomatoes API Key

The DSP provides a secure server-side proxy to any remote REST service.

Click on the ‘Services’ tab and enter required information about the movies service. Make sure the API Name and Base URL are exactly the same as pictured in the screenshot below. Scroll down to the Parameters section and enter ‘apiKey’ for name and your own Rotten Tomatoes API key for value. Then click the ‘Update’ button to save the movies service.

![rotten-tomatoes-params-screen](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/rotten-tomatoes-params-screen.png)

Click to expand the Service Defintion section of the screen. You need to copy a JSON file which defines the movies API. The movies API contains a simple GET call that takes a movie name as a string. Once you've copied the JSON, click the Save button in the lower right-hand corner to save your work.

**Important:** Make sure you set the basePath value to the correct URL path for your own DSP URL followed by /rest (i.e. replace ‘dsp-foo’ with your own DSP here "basePath":"https://dsp-foo.cloud.dreamfactory.com/rest")

Note: You can learn more about the API definition file [here](https://github.com/wordnik/swagger-spec/blob/master/versions/1.2.md).

```
{
   "swaggerVersion":"1.2",
   "apiVersion":"1.0",
   "basePath":"https://dsp-foo.cloud.dreamfactory.com/rest",
   "resourcePath":"/movies",
   "produces":[
      "application/json"
   ],
   "consumes":[
      "application/json"
   ],
   "apis":[
      {
         "path":"/movies",
         "operations":[
            {
               "method":"GET",
               "summary":"Get a recordset of movies based on a query parameter",
               "nickname":"getMovies",
               "type":"Movies",
               "parameters":[
                  {
                     "name":"q",
                     "description":"Movie name as a string",
                     "allowMultiple":false,
                     "type":"string",
                     "paramType":"query",
                     "required":true
                  }
               ],
               "responseMessages":[
                  {
                     "message":"Bad Request - Request does not have a valid format, all required parameters, etc.",
                     "code":400
                  },
                  {
                     "message":"System Error - Specific reason is included in the error message.",
                     "code":500
                  }
               ],
               "notes":"Use a plus sign between words in titles with multiple words"
            }
         ],
         "description":"Operations for resource type administration."
      }
   ],
   "models":{
      "Movies":{
         "id":"Movies",
         "properties":{
            "resource":{
               "type":"Array",
               "items":{
                  "$ref":"Movie"
               }
            }
         }
      },
      "Movie":{
         "id":"Movie",
         "properties":{
            "name":{
               "type":"string"
            }
         }
      },
      "Success":{
         "id":"Success",
         "properties":{
            "success":{
               "type":"boolean"
            }
         }
      }
   }
}
```

### Make a test API call to Rotten Tomatoes

Now you’re ready to make a test API call to Rotten Tomatoes. Click on the ‘API / SDK’ tab, click on the movies API to expand it, then click on the blue GET button. Scroll down and enter a movie name for the ‘q’ parameter and then click the ‘Try it out!’ button.

You should get a valid response back from Rotten Tomatoes, like so.

![movies-api-call](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/movies-api-call.png)

### Add a role for trivia app end users

Next you need to specify a role for end users that register to use the trivia application. The idea of roles is simple. [Roles specify access control](https://blog.dreamfactory.com/everything-you-need-to-know-about-identity-and-access-management-iam/) to apps, data, and REST services. Remember, you may configure other apps and services in your DSP that you wouldn’t want end users of the trivia app to access.

To create a new role, click on the ‘Roles’ tab. Call your role something easy to remember, like ‘Trivia Users’.

![trivia-users-role-name](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/trivia-users-role-name.png)

Next, check the checkbox next to ‘trivia’ to grant role access to the Trivia application.

![role-app-access](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/role-app-access.png)

Lastly, grant this role permissions for the Rotten Tomatoes API, TriviaScore data, and the user API:

1) Read Only permissions for the Rotten Tomatoes API

2) Read and Write permissions for the TriviaScore table

3) Read and Write permissions for System/user

![role-permissions-add](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/role-permissions-add.png) 

 Your permissions configuration should look like this when you’re done.

![role-permissions](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/role-permissions.png)

Now check the active box and click the Save button to save the role settings.

### Add a role for guest users

Sometimes you want to enable people to use your app without registering. In the trivia app, we allow a guest user to answer trivia questions without signing up.

Click on the ‘Roles’ tab and simply add a new role called ‘Guests’.

Follow the exact same steps as above to configure the ‘Guests’ role. The settings are identical:

1) Check the ‘trivia’ checkbox to grant access to the application

2) Read Only permissions for the Rotten Tomatoes API

3) Read and Write permissions for the TriviaScore table

4) Read and Write permissions for System/user

Check the active box and click the Save button to save the role settings.

### Enable CORS, guest users and open registration

The last step of our backend configuration is to turn on CORS access and enable guest users and user self-registration.

Since we’re running our application locally, we need to enable CORs (if you’re building an app that uses a browser, you must enable CORS if your application code isn't running on the DSP itself). To enable CORs, click on the ‘Config’ tab. Click the ‘Add New Host’ button and enter \* in the Host text box.

Note: The \* CORs designation is for local development only. Always make sure that your CORS configuration is secure in a production environment.

![enable-cors](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/enable-cors.png)

Lastly, we need to allow guest users and open registration. Check ‘Allow guest users’ and select ‘Guests’ as the role. Also check ‘Allow open registration’ and select ‘Trivia Users’ as the role. Then click the ‘Save’ button to save the configuration.

![user-reg-config](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/user-reg-config.png)

### Specify DSP URL and DSP API key in app.js

Congratulations, you’re now done with backend configuration!

Open up the trivia app project on your computer and locate the app.js file in the app/scripts directory. You need to specify two constants at the top of this file:

- DSP\_URL: set this to the URL of your DSP (i.e. replace ‘dsp-foo’ with your own DSP in https://dsp-foo.cloud.dreamfactory.com)
- DSP\_API\_KEY: set this to ‘trivia’ which is the name of the app you registered in your DSP

 ![app-constants](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/app-constants.png)

### Run the app locally

You can upload the trivia app source code to a server or package it with PhoneGap, but you probably want to run it locally first to see it in action.

To run the app locally, make sure you have NPM (Node Package Manager), Bower, and Grunt installed on your computer. Learn more about NPM [here](https://howtonode.org/introduction-to-npm), Bower [here](https://bower.io/), and Grunt [here](https://gruntjs.com/installing-grunt).

Open a terminal window and navigate to the root directory of the app (the directory where you see a number of files including ‘bower.json’).

![terminal-window](https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/terminal-window.png)

 Then from the command line type:

```
npm install
```

When that’s done type:

```
bower install
```

When that’s done, type the command below to launch a local server:

```
grunt server
```

Now you should now have a browser window running the application locally :-) It’s alive!

### Run the test cases

The trivia app comes with some unit tests and end-to-end tests located in the test directory.

To run the unit tests, type this command in your terminal from the root directory of the app (the directory where you see a number of files including ‘bower.json’).

```
grunt test:unit
```

To run the end-to-end tests, type this command in your terminal.

```
grunt test:e2e
```

## Calling the APIs from the Trivia App

The trivia application uses the angular-dreamfactory library. This library is built on Angular’s $http service and integrates your app with all the REST services that you set up in your DSP. In other words, every time you add a new REST service to your DSP, that REST service is exposed at run time to your Angular application.

Making API calls with the angular-dreamfactory library is simple. The convention is:

```
DreamFactory.api.service.method
```

Service is simply the name of the REST service in your DSP and method is any method available for that REST service, for example:

```
DreamFactory.api.user.login
```

The trivia application makes calls to three REST APIs in your DSP: user, db, and movies. To see the various methods for each service, go to the ‘API / SDK’ tab in your DSP and click on the SDK tab.

In the trivia app source code, open main.js and service.js to see some API calls. In main.js, the app uses user.register and user.login. In services.js, the ScoreKeeper service uses db.createRecord and the MovieService uses movie.getMovies.

Take a deeper dive look into the code to familiarize yourself with the angular-dreamfactory library and how to make API calls with it. You can also check out the short tutorial [here](https://www.dreamfactory.com/angularjs-example) that demonstrates how to make API calls using Angular’s built-in $resource service for calling RESTful services (you don’t have to use angular-dreamfactory but we hope it helps!).

We hope this tutorial has been helpful! Please post any questions or comments and we’ll get back to you!

Related reading: [Building an AngularJS Application Using DreamFactory](https://blog.dreamfactory.com/building-an-angularjs-application-using-the-dreamfactory-rest-api-backend/)

TAGS: [Social Links Menu](https://blog.dreamfactory.com/tag/social-links-menu)

![Terence Bennett](https://blog.dreamfactory.com/hs-fs/hubfs/1624046620145.jpg?width=100&height=100&name=1624046620145.jpg)

Terence Bennett

Terence Bennett, CEO of DreamFactory, has a wealth of experience in government IT systems and Google Cloud. His impressive background includes being a former U.S. Navy Intelligence Officer and a former member of Google's Red Team. Prior to becoming CEO, he served as COO at DreamFactory Software.

 Stay Connected with   
 The Connector Newsletter!

 Subscribe to stay up-to-date with DreamFactory's latest product updates, API best practices, and tech humor in your inbox.

[![Dreamfactory Logo](https://blog.dreamfactory.com/hubfs/raw_assets/public/dreamfactory/images/megamenu/Megamenu-logo.svg)](https://www.dreamfactory.com/)

[Call Sales +1 (415) 993-5877](tel:+14159935877)

Open – Mon–Fri 9–5 PT

[FREE 30 Minute Demo](https://www.dreamfactory.com/demo)

#### Follow us

- [GitHub](https://github.com/dreamfactorysoftware/dreamfactory)
- [Facebook](https://www.facebook.com/dfsoftwareinc/)
- [X (Twitter)](https://twitter.com/dfsoftwareinc)
- [LinkedIn](https://www.linkedin.com/company/dreamfactory-software)
- [YouTube](https://www.youtube.com/c/dreamfactorysoftware)

### Features

[Features](https://www.dreamfactory.com/features) [Self hosted](https://www.dreamfactory.com/features#self) [API Generation](https://www.dreamfactory.com/features#api) [Security](https://www.dreamfactory.com/features#secure) [Customization](https://www.dreamfactory.com/features#custom) [Pricing](https://www.dreamfactory.com/pricing)

### Installers

[Linux](https://www.dreamfactory.com/features#installer) [Docker](https://www.dreamfactory.com/features#installer) [Kubernetes](https://www.dreamfactory.com/features#installer)

### API Resources

[Documentation](https://docs.dreamfactory.com/) [Case Studies](https://www.dreamfactory.com/stories) [White Papers](https://www.dreamfactory.com/resources/whitepapers) [Academy](https://www.dreamfactory.com/academy) [API Calculator](https://calculator.dreamfactory.com) [Open Source](https://github.com/dreamfactorysoftware)

### Company

[Blog](https://blog.dreamfactory.com/) [Hub](https://www.dreamfactory.com/hub) [About us](https://www.dreamfactory.com/about) [Partners](https://www.dreamfactory.com/partners) [Support](https://www.dreamfactory.com/support) [Connectors](https://www.dreamfactory.com/connectors) [Contact Us](https://www.dreamfactory.com/demo)

 © 2025 DreamFactory. All rights reserved.

[Terms of Use](https://www.dreamfactory.com/terms-of-use) [Privacy Policy](https://www.dreamfactory.com/privacy-policy) [LLMs](https://www.dreamfactory.com/llms.txt)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Terence Bennett",
    "url" : "https://blog.dreamfactory.com/author/terencebennett"
  },
  "dateModified" : "2024-05-07T08:21:54.623Z",
  "datePublished" : "2026-01-10T00:00:00.000Z",
  "headline" : "Tutorial: Angular + REST Made Simple",
  "image" : [ "https://blog.dreamfactory.com/hubfs/Imported_Blog_Media/team-ben-May-07-2024-08-15-48-6708-AM.jpg" ],
  "mainEntityOfPage" : {
    "@id" : "https://blog.dreamfactory.com/tutorial-angular-and-rest-made-simple",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blog.dreamfactory.com/hubfs/DreamFactory%20-%20Orange%20-%20Transparent-1.png"
    }
  }
}
```