FAQs

From DreamFactory
Jump to: navigation, search
(Created page with "###**What is DreamFactory?** DreamFactory is an open source mobile backend that provides RESTful services for building modern applications. <br> ![](http://www.dreamfactory...")
 
 
(43 intermediate revisions by 6 users not shown)
Line 1: Line 1:
###**What is DreamFactory?**
+
=== What hard technical problems does DreamFactory solve? ===
  
DreamFactory is an open source mobile backend that provides RESTful services for building modern applications.
+
The biggest technical problem that DreamFactory solves is providing a comprehensive, automatically-generated, documented, and secure REST API for every popular back-end data source, particularly SQL. Without DreamFactory, developers have to manually create, document, maintain, and securely expose custom REST APIs for each new development project. DreamFactory automatically REST-enables your data sources with a standard interface, so it becomes really easy to use SQL, NoSQL, files, email, push notifications, and remote REST / SOAP web services for any new application project, and re-use the REST API across many different application projects.
  
<br>
+
Second, any real application needs server-side business logic. DreamFactory makes it easy to customize any API call with server-side scripting, using the built-in V8 Javascript Engine, Node.js, PHP, or Python. Event scripts can be used to pre-process any API request and post-process any API response. DreamFactory also supports custom scripting, which can be called directly from your client application or from a server.
  
![](http://www.dreamfactory.com/sites/default/files/short_stack.png)  
+
Third, DreamFactory addresses the important challenge of back-end data security. DreamFactory provides a user management system with role-based access control access to the entire REST API and scripting system, including table-level and record-level access to SQL and NoSQL, files, email, push notifications, remote REST / SOAP web services, and any custom APIs you add in DreamFactory. The user management system includes an administrative application to manage API keys, end users, user roles, OAuth, LDAP, and Active Directory integration. Under the hood, DreamFactory handles secure password hashing, authentication, and session handling for you with API keys and JSON Web Tokens (JWT) and protects against SQL injection attacks.
  
<br>
+
=== What types of apps are well-suited for DreamFactory? ===
  
DreamFactory automatically generates a comprehensive, customizable, and secure REST API for any backend data resource, including SQL, NoSQL, file storage, email, and push notifications.  
+
Any data-driven, RESTful application is a great fit for DreamFactory. This includes mobile, web, and IoT apps.
  
Other important features include server-side scripting and customization, single sign-on, user management, record-level access control, interactive API docs, and client SDKs.
+
Native, hybrid, and pure HTML5 applications are particularly well-suited for DreamFactory, particularly enterprise mobile apps that need a secure REST API to access data stored in legacy SQL databases.
  
In technical terms, DreamFactory is a LAMP / WAMP / MAMP stack that runs on Linux (Ubuntu, Red Hat, CentOS, Debian), Windows, and Mac OS X. As such, DreamFactory scales horizontally and vertically based on the number and size of servers. [Installation options](Usage-Options) are highly flexible. You can install DreamFactory on your IaaS cloud, PaaS provider, on premises server, or laptop.  
+
Web apps that use REST and JSON for data exchange are also well-suited to DreamFactory. Building AngularJS applications with DreamFactory is a popular choice for many developers.
  
DreamFactory is “runtime” software, which is to say that your application makes API calls to DreamFactory and DreamFactory returns JSON (or XML) at runtime back to your application over SSL.  
+
DreamFactory is also becoming a popular technology for IoT applications. Device sensors can easily write data to REST endpoints and human users or machines can read the data via REST.
  
###**What are some benefits of using DreamFactory?**
+
DreamFactory provides [[DreamFactory/Tutorials/Example_Applications|example applications]] for popular client-side technologies.
  
DreamFactory provides many benefits, depending on your role.
+
=== Who is using DreamFactory? ===
  
DreamFactory helps front-end developers
+
Since DreamFactory is open source and REST APIs are flexible, usage is diverse.
  
* Focus on front-end development rather than working on (or waiting on) server-side software
+
The most common use case is mobile app and web app development that requires RESTful connections to back-end data sources, most commonly SQL. DreamFactory is used by enterprise companies for both internal and customer-facing applications, systems integrators, application development companies, ISVs (independent software vendors), freelance developers, students, and hobbyists. See the stories [https://www.dreamfactory.com/stories here] for some examples of how DreamFactory is being used.
* Connect to new data sources in minutes with just a few clicks
+
* Access multiple data sources with RESTful ease and automatic security
+
* Deliver projects much faster via instant, robust RESTful services
+
  
DreamFactory helps back-end / API developers
+
=== How would I explain the business benefits of DreamFactory to my manager? ===
  
* Automatically generate and document secure, reliable, and reusable RESTful APIs
+
From a business perspective, DreamFactory helps in a few ways.
* Customize auto-generated APIs with pre- and post-processing scripting logic
+
* Integrate with existing security controls so you don’t have to re-implement and test for each API
+
* Move applications between clouds or between your cloud and data center
+
  
DreamFactory helps enterprise architects
+
First, DreamFactory solves the backend API integration and security requirements that data-driven mobile applications need. In short, it makes development much faster. DreamFactory automates REST API creation and server-side security controls on your backend data. This means that applications are a lot faster to build and much less costly to maintain over time.
  
* Govern security with your own data access platform running in the cloud or on premises
+
Second, DreamFactory prevents infrastructure lock-in. DreamFactory is open source and server-agnostic. It runs the same way on different clouds (e.g. AWS and Azure) and server operating systems (e.g. Linux and Windows). DreamFactory is database-agnostic too. The REST API and JSON structure are identical for every supported SQL and NoSQL vendor. This provides real portability. You can install DreamFactory in the cloud or on premises. And you can change databases without changing your application.
* Accelerate innovation with secure, scalable, reusable REST APIs to enterprise data sources
+
* Enable standardized services abstraction layer for modern apps
+
* Improve application reliability and security enterprise-wide with managed RESTful services
+
  
###**What hard technical problems does DreamFactory solve?**
+
Third, DreamFactory centralizes control for enterprise IT. A typical Fortune 500 company is planning to build thousands of mobile applications. All these applications need to be secure. Securing back-end data is extremely challenging in this context. DreamFactory provides a centralized set of reusable REST APIs that can be shared department-wide and centrally managed by IT.
  
The biggest technical problem that DreamFactory solves is providing a comprehensive, automatically generated, documented, and secure REST API for every popular backend data source. Without DreamFactory, developers have to manually create, document, maintain, and securely expose custom REST APIs to disparate data sources, and repeat that exercise for each new development project. DreamFactory automatically REST-enables all these data sources with a standard interface, so it becomes really easy to use any popular SQL database, NoSQL database, and file storage system for any application project, and re-use the REST API across a portfolio of application projects.
+
=== How does DreamFactory handle security? ===
  
Any non-trivial application necessitates server-side business logic. For this purpose, DreamFactory allows you to easily customize any API call with server-side scripting. Event scripts can be used to pre-process any API request and post-process any API response. DreamFactory also supports custom scripting which can be called directly from your client application or from a server.  
+
DreamFactory provides a user management system that controls end user access to your back-end data. Each client user (or machine) has an application-specific role that governs access to the underlying data exposed for each API endpoint.
  
DreamFactory also addresses the big and important challenge of backend data security. DreamFactory provides a user management system with role-based access control access to your backend data, including table-level and record-level access to SQL and NoSQL, BLOB storage, email, and push notifications. The security system also governs access to any remote REST service you add. For example, you can easily connect to a custom REST API with DreamFactory and use the role system to control end user access to your custom-built API. The user management system includes an administrative application to manage end users, user roles, OAuth, LDAP, and Active Directory integration. Under the hood, DreamFactory handles secure password hashing, authentication, and session handling for you and protects against SQL injection attacks.  
+
An administrator configures roles in the DreamFactory Admin Console. Each end user is tied to a role in the context of each application (each application has an API key). Each role has a specific set of data permissions. For example, an administrator might set up a “Sales Rep” role and specify that the “Sales Rep” role be limited to read-only access to a particular set of tables and records in your Oracle database via the REST API.
  
Another problem DreamFactory solves is the generation of client SDKs for every major front-end development platform. Once you hook up the backend data sources, you can immediately use DreamFactory JavaScript SDK from any HTML5 or PhoneGap application. Code libraries are generated for native developers using Xcode, Visual Studio, Eclipse, and Titanium. This vastly simplifies calling the DreamFactory REST API from your client application.
+
DreamFactory supports a number of access control features:
  
###**What types of apps are well suited for DreamFactory?**
+
* Map roles to Active Directory Groups for secure authentication and Authorization with AD
 +
* Map roles to OAuth providers such as Facebook, Google, Twitter, and GitHub
 +
* Table-level CRUD access to SQL and NoSQL for each role
 +
* Record-level CRUD access to SQL and NoSQL for each role
 +
* Inherit existing CRUD permissions for SQL and NoSQL at the system, role, and user level (called lookup keys)
 +
* CRUD access to folders and files
 +
* Custom access control to any remote web service, including existing REST and SOAP interfaces
 +
* Custom access control to any custom API you add to DreamFactory
  
Any data-driven application that would benefit from a REST API is a great fit for DreamFactory. This includes mobile apps, web apps, and IoT apps.
+
For details on security, consult the [https://www.dreamfactory.com/resources/whitepapers/security-guide/ DreamFactory Security Guide].
  
Native mobile, hybrid mobile, and pure HTML5 mobile applications are extremely well suited for DreamFactory, particularly enterprise mobile apps that need a secure REST API to return data stored in legacy SQL databases. DreamFactory provides client SDKs and sample applications for every major client-side technology ([iOS](https://github.com/dreamfactorysoftware/ios-sdk), [Android](https://github.com/dreamfactorysoftware/android-sdk), [Titanium](https://github.com/dreamfactorysoftware/titanium-dreamfactory), [Javascript](https://github.com/dreamfactorysoftware/javascript-sdk), [jQuery](https://github.com/dreamfactorysoftware/app-todo-jquery), [AngularJS](https://github.com/dreamfactorysoftware/angular-dreamfactory), and [Sencha](https://github.com/dreamfactorysoftware/app-todo-sencha)).
+
=== How does DreamFactory scale? ===
+
Web apps that rely on REST and JSON for data exchange are well suited to DreamFactory. Building AngularJS applications with DreamFactory is a popular choice for many developers. DreamFactory has several AngularJS modules for [user management](https://github.com/dreamfactorysoftware/angular_dreamfactory_user_management_module), [API calls](https://github.com/dreamfactorysoftware/angular-dreamfactory), and [data management](https://github.com/dreamfactorysoftware/angular-data-manager).
+
  
DreamFactory is also a good fit for server-to-server API calls. For example, you can easily call DreamFactory from a .Net application running on a server.
+
DreamFactory is installed as a LAMP stack (Linux), WAMP stack (Windows) or MAMP stack (Mac). Web servers route API requests to DreamFactory, and DreamFactory returns JSON (or XML) back to your application. DreamFactory supports Apache, NGINX, and IIS web servers and you can use the native file system, Redis, or Memcached for caching.
  
Lastly, DreamFactory is becoming a popular technology for IoT (Internet of Things) applications. Device sensors can easily transmit data RESTfully to DreamFactory and human end users (or machines) can access the transmitted data via REST calls.
+
To scale DreamFactory vertically, install it on servers with sufficient memory, disk space, and processing speed to handle your loads. To scale DreamFactory horizontally, deploy and load balance as many web servers as you need. For details on scalability, including benchmark tests, consult the [https://www.dreamfactory.com/resources/whitepapers/scalability-guide/ DreamFactory Scalability Guide] and [https://www.dreamfactory.com/resources/whitepapers/architecture-guide/ DreamFactory Architecture Guide].
  
###**Who is using DreamFactory?**
+
=== How can I learn to build an app using DreamFactory? ===
  
Because DreamFactory is open source and REST APIs are very flexible, usage is diverse.  
+
Before building your first application, it’s important to understand how REST APIs work. If you don’t understand REST APIs, read up on REST first. In a nutshell, each API call you make to DreamFactory is simply requesting a resource with a specific URL path. You can pass parameters in your API calls, such as a sort order and filter string, and these parameters are part of the URL path (appended as parameters in the URL). Querying backend data with the API is asking DreamFactory to return data from a specific URL endpoint. This is a different paradigm than writing a SQL query or a stored procedure to return data from a server.
  
The most common use case is mobile app development that requires connections to data sources on the backend. DreamFactory is used by large enterprise companies for both internal and customer-facing applications, systems integrators and mobile app development companies building apps for their enterprise clients, freelance developers, students, and hobbyists.
+
After understanding the basics of REST, check out the [[DreamFactory/Tutorials/Using_the_REST_API|tutorials]] to learn the basics of DreamFactory by example.
  
DreamFactory is also used by ISVs (independent software vendors) as the run-time API server that connects frontend apps to backend data using REST. ISVs include companies that sell mobile applications, SaaS web application companies, and IoT vendors (Internet of Things).
+
Then walk carefully through setting up the example address book application for your choice of front-end. Links to the example app repos are [[DreamFactory/Tutorials/Example_Applications|here]].
  
###**How would I explain the business benefits of DreamFactory to my manager?**
+
If you get stuck, search the [https://community.dreamfactory.com community forum] for an answer or post your question on the forum after searching. You can also contact our support engineers free of charge for a 10-day period (10 days from your first support inquiry). Just email support@dreamfactory.com or use the in-product chat feature.
  
From a business perspective, DreamFactory helps companies in a few ways.
+
Lastly, we provide support subscriptions. More information on support subscriptions is [https://www.dreamfactory.com/products here].
  
First, DreamFactory solves the backend API integration and security requirements that data-driven mobile applications require. DreamFactory automates both REST API creation and server-side security controls on your backend data. This means that apps are faster to build with smaller teams, and projects are less expensive to build and maintain.
+
=== How can I log bugs and feature requests? ===
  
Second, DreamFactory prevents lock-in to infrastructure and database vendors. DreamFactory is open source and server-agnostic. It runs the same way on different clouds (e.g. AWS and Azure) and server operating systems (e.g. Linux and Windows). DreamFactory is database-agnostic too. The REST API and JSON structure are identical for every supported SQL and NoSQL vendor. This provides portability. You can install DreamFactory in the cloud or on premises. And you can change databases anytime without changing your front-end application source code. Choose your preferred infrastructure and database stack, and simply swap it out if something better emerges.
+
If you find a bug or have a feature request, please [https://github.com/dreamfactorysoftware/dreamfactory/issues file a ticket on GitHub] or post it on the [https://community.dreamfactory.com/ community forum].
  
Third, DreamFactory centralizes control for IT departments. A typical Fortune 500 company is planning to build thousands of mobile applications. All these applications need to be secured. Securing backend data is extremely challenging in this context. DreamFactory provides a centralized set of reusable REST APIs that can be shared enterprise- or department-wide and governed centrally by the IT department. When an end user loses a device or leaves a company, it’s important to lock down the device itself (e.g. MDM) AND the backend data. DreamFactory addresses the latter use case, specifically the ability to manage access control to sensitive backend data in real time.
+
=== How can I get technical support? ===
  
###**How does DreamFactory handle security?**
+
There are few ways to get technical help. A good place to start is the [https://community.dreamfactory.com/ community forum]. DreamFactory also provides dedicated email, chat, and phone support when you purchase a [https://www.dreamfactory.com/products Silver or Gold subscription].
  
DreamFactory provides a user management system that controls end user access to your backend data. The user management system uses the MySQL database that comes installed with DreamFactory. The user management system itself has a REST API, so you can mirror an existing user management system, but users and roles must also be stored in DreamFactory. Active Directory (LDAP) integration will be supported in Q2 2015, with the 2.0 release of DreamFactory.
+
=== Can I contribute to the DreamFactory project? ===
  
An administrator configures roles in the DreamFactory Admin Console. You add as many roles as you need. Each end user is associated with one role. Each role has a specific set of data permissions. For example, in the DreamFactory Admin Console, an Admin could set up a “Sales Rep One” role and specify that the “Sales Rep One” role be limited to read-only access to a particular set of tables and records in the Oracle database via the REST API. In the DreamFactory Admin Console, the Admin would simply add a REST API for this Oracle database, say “/oracle”, and then grant read-only access to a specific set of tables and records (again, in the DreamFactory Admin Console). All security is enforced server-side in DreamFactory when each API call to /oracle/{table_name} is made by each end user, each of whom is associated with single role.
+
Yes. DreamFactory is an open source project and anyone is welcome to contribute. Please follow the guidelines [[DreamFactory/Contribution_Guide|here]] to contribute.
  
This principle applies to each and every API call made to DreamFactory: 1) the client application asks the end user to authenticate; 2) if authentication succeeds, the client receives a session token; 3) DreamFactory is aware of this user’s role on the server and governs backend data access via role permissions for the duration of that session.
+
=== How is DreamFactory different than API Management software? ===
  
It’s also important to understand that apps and services are completely decoupled. In other words, there’s no association between apps and REST services in DreamFactory. Apps use REST services based on your application code. Roles independently govern access to apps (i.e. this role can access this app) and services (this role can perform CRUD operations on this table). This is useful because multiple apps can share a common RESTful interface to the same backend resources, and roles can have different data access permissions (even for the same app used by end users with different roles).  
+
API management software requires you to build REST APIs yourself and helps you manage your custom APIs.
  
DreamFactory supports a number of access control features:
+
DreamFactory, on the other hand, is a transactional run-time server for client applications that 1) automatically generates REST APIs for you, 2) enables you to customize API behavior with server-side scripts, 3) manages all the backend security for those APIs, 4) returns JSON / XML from REST API calls at runtime.
  
* Table-level CRUD access to SQL and NoSQL at the role level
+
Note that you can easily use DreamFactory in conjunction with API management software. If you're using an API management solution today, you can still use it to manage DreamFactory REST endpoints. In this case, DreamFactory handles API generation while the API management software manages the DreamFactory API endpoints, as it would manage any API endpoint.
* Record-level CRUD access to SQL and NoSQL at the role level (called server-side filters)
+
* Ability to inherit existing CRUD permissions for SQL and NoSQL at the system, role, and user level (called lookup keys)
+
* Custom CRUD security to SQL and NoSQL at the role level (called server-side scripting, particularly useful for defining permissions based on data state)
+
* Bucket-level CRUD access for file storage (more granular file permissions are definable with database pointers)
+
* Custom access control to any remote web service (governed server-side via JSON definition)
+
  
###**How do I scale DreamFactory to handle a large volume of API calls and data?**
+
=== How is DreamFactory different than hosted “mobile backend as a service” (aka MBaaS)? ===
  
DreamFactory is installed as a Linux LAMP stack, Windows WAMP stack or Mac MAMP stack. Web servers route the API requests to DreamFactory, and DreamFactory returns JSON (or XML) back to your client applications. DreamFactory supports Apache and NGINX web servers.  
+
“MBaaS” is an acronym for “mobile backend as a service”. MBaaS vendors host their customers' back-end data and provide features to reduce the amount of server-side code that developers need to write for their mobile applications.
  
DreamFactory scales horizontally. To handle your API throughput requirements (i.e. the API calls coming from client applications), you can deploy and load balance as many web servers as you need.
+
DreamFactory provides the same simplification benefits of MBaaS. However, DreamFactory is an open source solution that targets enterprises. There are a number of differences between MBaaS vendors and DreamFactory:
  
DreamFactory also scales vertically. You need to install DreamFactory on servers with sufficient memory, disk space, and processing speed to handle your loads.
+
* MBaaS products are proprietary. DreamFactory is open source. You can modify the source code if necessary to meet your specific requirements.
 +
* MBaaS companies host your data. DreamFactory does not host your data. You host DreamFactory on whatever server infrastructure you prefer, including behind a corporate firewall.
 +
* MBaaS products typically use NoSQL to store data. DreamFactory supports every major database vendor, both SQL vendors and NoSQL vendors.
 +
* MBaaS products do not specialize in integrating with existing "legacy" databases and file systems inside enterprises. DreamFactory provides REST APIs for your existing SQL databases, NoSQL databases, and file storage systems.
 +
* MBaaS security features are tailored for consumer mobile app use cases. DreamFactory provides enterprise-grade back-end security.
  
DreamFactory has its own MySQL database, which stores users and roles (i.e. end users of your client applications). You can customize the MySQL schema and use the MySQL database for application data (there’s an API called ‘/db’ for the MySQL database). You can deploy DreamFactory on an any server (on premises, cloud IaaS, and PaaS) and the MySQL database can handle millions of end users. You can also use the same database management tools you use today for backing up and replicating data in the MySQL database.
+
=== How is DreamFactory different than “platform as a service” (aka PaaS)? ===
  
###**How can I learn to build an app using DreamFactory?**
+
“PaaS” is an acronym for “platform as a service”. PaaS products such as Pivotal Web Services and Heroku run server hardware and software (i.e. “platform”) for you. Think of PaaS as full-service IaaS (Infrastructure as a Service). Instead of having your own Dev Ops team managing AWS provisioning, you can outsource the Dev Ops function to a PaaS company to monitor servers and uptime.
  
Before building your first application, it’s important to understand how REST APIs work. If you don’t understand REST APIs, read up on REST first. In a nutshell, each API call you make to DreamFactory is simply requesting a resource with a specific URL path. You can pass parameters in your API calls, such as a sort order and filter string, and these parameters are part of the URL path (appended as parameters in the URL). In effect, querying backend data with the API is asking DreamFactory to return data from a specific URL endpoint. This is a different paradigm than writing a SQL query or a stored procedure to return data from the server.
+
DreamFactory partners with PaaS companies. When you sign up for a PaaS product, you can easily deploy DreamFactory in your PaaS environment, and develop applications with DreamFactory that are hosted on your PaaS of choice.
  
The easiest way to start using DreamFactory is to sign up for a free hosted developer environment on [www.dreamfactory.com](http://www.dreamfactory.com) or install DreamFactory on your local machine or server with one of the [Bitnami installers](https://bitnami.com/stack/dreamfactory). The best way to create your first app is to follow the steps in the Quickstart tab of the DreamFactory Admin Console. You should also browse the API docs tab to try out some of the API calls to the ‘/db’ API which returns data from the MySQL database that comes installed with DreamFactory.
+
===What if I don't want to add oci8 and Oracle drivers to my install?===
  
After that, you should follow the [tutorials](Tutorials) and [screencasts](Screencasts) to build a simple application using your favorite front-end framework. If you still need help, check out the [community forum](http://community.dreamfactory.com/) or send an email to support@dreamfactory.com.
+
You can use the following command to ignore the oci8 requirements.:
  
###**Is there a product roadmap?**
+
<source lang="bash">composer install --ignore-platform-reqs --no-dev</source>
  
There’s a high-level roadmap published [here](Upcoming-Features). If you have a specific feature request or find a bug, please [file a ticket on GitHub](https://github.com/dreamfactorysoftware/dsp-core/issues) or post it on the [community forum](http://community.dreamfactory.com/).
+
===How do I find my username and password for the Bitnami installation I just spun up?===
  
###**How is DreamFactory different than API Management software?**
+
https://docs.bitnami.com/installer/apps/dreamfactory/#what-is-the-administrator-username-set-for-me-to-log-in-to-the-application-for-the-first-time
  
API management requires you to build REST APIs yourself and helps you manage your custom APIs.  
+
===cURL Commands for Microsoft Command Line===
 +
The syntax is very close to Linux based systems, in fact, we recommend Git for Windows[https://gitforwindows.org/] but if you are using a different cURL interpreter you might need to format some of the calls a bit differently as double quotes need to be escaped, etc. Below is an example of how to modify these calls:
  
DreamFactory, on the other hand, is a *run-time* server that 1) automatically generates REST APIs for you; 2) enables you to customize API behavior with server-side scripts; 3) manages all the backend security for those APIs; and 4) returns JSON / XML from REST API calls at *run time*.
+
Example cURL request found in our tutorial section[https://wiki.dreamfactory.com/DreamFactory/Tutorials/cURL_Examples]
 
+
<pre>curl -i -k -3 -X POST "http://localhost:8080/api/v2/system/admin/session" \
The principles behind DreamFactory are simple: 1) backend data resides almost exclusively in SQL, NoSQL, and file storage systems; 2) data transport between client and server is best done with REST and JSON (particularly for mobile apps, single page web apps, and IoT apps); 3) REST APIs for SQL, NoSQL, and file storage are well understood and benefit from a standardized path structure for the vast majority of use cases. Hence, REST APIs can be automatically generated and ready to use. DreamFactory auto-generates a comprehensive REST API for SQL, NoSQL, and file storage, so you don’t have to write your own APIs.
+
-d '{ "email" : "user@example.com", "password" : "pass123" }' \
 
+
-H "Content-Type: application/json"
###**How is DreamFactory different than hosted “mobile backend as a service” (aka MBaaS)?**
+
</pre>
 
+
“MBaaS” is an acronym for “mobile backend as a service”. MBaaS vendors host their customers' backend data and provide features to reduce the amount of server-side code that developers need to write for their mobile applications.
+
 
+
DreamFactory provides the same simplification benefits of MBaaS. However, DreamFactory is an open source solution that targets enterprises. There are critical differences between MBaaS vendors and DreamFactory:
+
 
+
* MBaaS products are proprietary. DreamFactory is open source. You can modify the source code if necessary to meet your specific requirements.
+
* MBaaS companies host your data. DreamFactory does not host your data. You host DreamFactory on whatever server infrastructure you prefer, often behind a corporate firewall.
+
* MBaaS products typically use NoSQL to store data. DreamFactory supports every major database vendor, both SQL vendors and NoSQL vendors.
+
* MBaaS products do not specialize in integrating with existing "legacy" databases and file systems inside enterprises. DreamFactory provides REST APIs for your existing SQL databases, NoSQL databases, and file storage systems.
+
* MBaaS security features are tailored for consumer mobile app use cases. DreamFactory provides enterprise-grade backend security.
+
 
+
###**How is DreamFactory different than “platform as a service” (aka PaaS)?**
+
 
+
“PaaS” is an acronym for “platform as a service”. PaaS products such as Pivotal Web Services and Heroku run server hardware and software (i.e. “platform”) for you. Think of PaaS as full-service IaaS (Infrastructure as a Service). Instead of having your own Dev Ops team managing AWS provisioning, you can outsource the Dev Ops function to a PaaS company to monitor servers and uptime.
+
  
DreamFactory partners with PaaS companies. When you sign up for a PaaS product, you can easily deploy DreamFactory in your PaaS environment, and develop applications with DreamFactory that are hosted on your PaaS.
+
How it needs to be formatted on the Command Line:
 +
<pre>curl -i -k -3 -X POST -H "Content-Type: application/json" 
 +
-d "{ \"email\" : \"user@example.com\", \"password\" : \"password\" }"
 +
http://localhost:8080/api/v2/system/admin/session
 +
</pre>

Latest revision as of 11:02, 2 September 2020

What hard technical problems does DreamFactory solve?

The biggest technical problem that DreamFactory solves is providing a comprehensive, automatically-generated, documented, and secure REST API for every popular back-end data source, particularly SQL. Without DreamFactory, developers have to manually create, document, maintain, and securely expose custom REST APIs for each new development project. DreamFactory automatically REST-enables your data sources with a standard interface, so it becomes really easy to use SQL, NoSQL, files, email, push notifications, and remote REST / SOAP web services for any new application project, and re-use the REST API across many different application projects.

Second, any real application needs server-side business logic. DreamFactory makes it easy to customize any API call with server-side scripting, using the built-in V8 Javascript Engine, Node.js, PHP, or Python. Event scripts can be used to pre-process any API request and post-process any API response. DreamFactory also supports custom scripting, which can be called directly from your client application or from a server.

Third, DreamFactory addresses the important challenge of back-end data security. DreamFactory provides a user management system with role-based access control access to the entire REST API and scripting system, including table-level and record-level access to SQL and NoSQL, files, email, push notifications, remote REST / SOAP web services, and any custom APIs you add in DreamFactory. The user management system includes an administrative application to manage API keys, end users, user roles, OAuth, LDAP, and Active Directory integration. Under the hood, DreamFactory handles secure password hashing, authentication, and session handling for you with API keys and JSON Web Tokens (JWT) and protects against SQL injection attacks.

What types of apps are well-suited for DreamFactory?

Any data-driven, RESTful application is a great fit for DreamFactory. This includes mobile, web, and IoT apps.

Native, hybrid, and pure HTML5 applications are particularly well-suited for DreamFactory, particularly enterprise mobile apps that need a secure REST API to access data stored in legacy SQL databases.

Web apps that use REST and JSON for data exchange are also well-suited to DreamFactory. Building AngularJS applications with DreamFactory is a popular choice for many developers.

DreamFactory is also becoming a popular technology for IoT applications. Device sensors can easily write data to REST endpoints and human users or machines can read the data via REST.

DreamFactory provides example applications for popular client-side technologies.

Who is using DreamFactory?

Since DreamFactory is open source and REST APIs are flexible, usage is diverse.

The most common use case is mobile app and web app development that requires RESTful connections to back-end data sources, most commonly SQL. DreamFactory is used by enterprise companies for both internal and customer-facing applications, systems integrators, application development companies, ISVs (independent software vendors), freelance developers, students, and hobbyists. See the stories here for some examples of how DreamFactory is being used.

How would I explain the business benefits of DreamFactory to my manager?

From a business perspective, DreamFactory helps in a few ways.

First, DreamFactory solves the backend API integration and security requirements that data-driven mobile applications need. In short, it makes development much faster. DreamFactory automates REST API creation and server-side security controls on your backend data. This means that applications are a lot faster to build and much less costly to maintain over time.

Second, DreamFactory prevents infrastructure lock-in. DreamFactory is open source and server-agnostic. It runs the same way on different clouds (e.g. AWS and Azure) and server operating systems (e.g. Linux and Windows). DreamFactory is database-agnostic too. The REST API and JSON structure are identical for every supported SQL and NoSQL vendor. This provides real portability. You can install DreamFactory in the cloud or on premises. And you can change databases without changing your application.

Third, DreamFactory centralizes control for enterprise IT. A typical Fortune 500 company is planning to build thousands of mobile applications. All these applications need to be secure. Securing back-end data is extremely challenging in this context. DreamFactory provides a centralized set of reusable REST APIs that can be shared department-wide and centrally managed by IT.

How does DreamFactory handle security?

DreamFactory provides a user management system that controls end user access to your back-end data. Each client user (or machine) has an application-specific role that governs access to the underlying data exposed for each API endpoint.

An administrator configures roles in the DreamFactory Admin Console. Each end user is tied to a role in the context of each application (each application has an API key). Each role has a specific set of data permissions. For example, an administrator might set up a “Sales Rep” role and specify that the “Sales Rep” role be limited to read-only access to a particular set of tables and records in your Oracle database via the REST API.

DreamFactory supports a number of access control features:

  • Map roles to Active Directory Groups for secure authentication and Authorization with AD
  • Map roles to OAuth providers such as Facebook, Google, Twitter, and GitHub
  • Table-level CRUD access to SQL and NoSQL for each role
  • Record-level CRUD access to SQL and NoSQL for each role
  • Inherit existing CRUD permissions for SQL and NoSQL at the system, role, and user level (called lookup keys)
  • CRUD access to folders and files
  • Custom access control to any remote web service, including existing REST and SOAP interfaces
  • Custom access control to any custom API you add to DreamFactory

For details on security, consult the DreamFactory Security Guide.

How does DreamFactory scale?

DreamFactory is installed as a LAMP stack (Linux), WAMP stack (Windows) or MAMP stack (Mac). Web servers route API requests to DreamFactory, and DreamFactory returns JSON (or XML) back to your application. DreamFactory supports Apache, NGINX, and IIS web servers and you can use the native file system, Redis, or Memcached for caching.

To scale DreamFactory vertically, install it on servers with sufficient memory, disk space, and processing speed to handle your loads. To scale DreamFactory horizontally, deploy and load balance as many web servers as you need. For details on scalability, including benchmark tests, consult the DreamFactory Scalability Guide and DreamFactory Architecture Guide.

How can I learn to build an app using DreamFactory?

Before building your first application, it’s important to understand how REST APIs work. If you don’t understand REST APIs, read up on REST first. In a nutshell, each API call you make to DreamFactory is simply requesting a resource with a specific URL path. You can pass parameters in your API calls, such as a sort order and filter string, and these parameters are part of the URL path (appended as parameters in the URL). Querying backend data with the API is asking DreamFactory to return data from a specific URL endpoint. This is a different paradigm than writing a SQL query or a stored procedure to return data from a server.

After understanding the basics of REST, check out the tutorials to learn the basics of DreamFactory by example.

Then walk carefully through setting up the example address book application for your choice of front-end. Links to the example app repos are here.

If you get stuck, search the community forum for an answer or post your question on the forum after searching. You can also contact our support engineers free of charge for a 10-day period (10 days from your first support inquiry). Just email support@dreamfactory.com or use the in-product chat feature.

Lastly, we provide support subscriptions. More information on support subscriptions is here.

How can I log bugs and feature requests?

If you find a bug or have a feature request, please file a ticket on GitHub or post it on the community forum.

How can I get technical support?

There are few ways to get technical help. A good place to start is the community forum. DreamFactory also provides dedicated email, chat, and phone support when you purchase a Silver or Gold subscription.

Can I contribute to the DreamFactory project?

Yes. DreamFactory is an open source project and anyone is welcome to contribute. Please follow the guidelines here to contribute.

How is DreamFactory different than API Management software?

API management software requires you to build REST APIs yourself and helps you manage your custom APIs.

DreamFactory, on the other hand, is a transactional run-time server for client applications that 1) automatically generates REST APIs for you, 2) enables you to customize API behavior with server-side scripts, 3) manages all the backend security for those APIs, 4) returns JSON / XML from REST API calls at runtime.

Note that you can easily use DreamFactory in conjunction with API management software. If you're using an API management solution today, you can still use it to manage DreamFactory REST endpoints. In this case, DreamFactory handles API generation while the API management software manages the DreamFactory API endpoints, as it would manage any API endpoint.

How is DreamFactory different than hosted “mobile backend as a service” (aka MBaaS)?

“MBaaS” is an acronym for “mobile backend as a service”. MBaaS vendors host their customers' back-end data and provide features to reduce the amount of server-side code that developers need to write for their mobile applications.

DreamFactory provides the same simplification benefits of MBaaS. However, DreamFactory is an open source solution that targets enterprises. There are a number of differences between MBaaS vendors and DreamFactory:

  • MBaaS products are proprietary. DreamFactory is open source. You can modify the source code if necessary to meet your specific requirements.
  • MBaaS companies host your data. DreamFactory does not host your data. You host DreamFactory on whatever server infrastructure you prefer, including behind a corporate firewall.
  • MBaaS products typically use NoSQL to store data. DreamFactory supports every major database vendor, both SQL vendors and NoSQL vendors.
  • MBaaS products do not specialize in integrating with existing "legacy" databases and file systems inside enterprises. DreamFactory provides REST APIs for your existing SQL databases, NoSQL databases, and file storage systems.
  • MBaaS security features are tailored for consumer mobile app use cases. DreamFactory provides enterprise-grade back-end security.

How is DreamFactory different than “platform as a service” (aka PaaS)?

“PaaS” is an acronym for “platform as a service”. PaaS products such as Pivotal Web Services and Heroku run server hardware and software (i.e. “platform”) for you. Think of PaaS as full-service IaaS (Infrastructure as a Service). Instead of having your own Dev Ops team managing AWS provisioning, you can outsource the Dev Ops function to a PaaS company to monitor servers and uptime.

DreamFactory partners with PaaS companies. When you sign up for a PaaS product, you can easily deploy DreamFactory in your PaaS environment, and develop applications with DreamFactory that are hosted on your PaaS of choice.

What if I don't want to add oci8 and Oracle drivers to my install?

You can use the following command to ignore the oci8 requirements.:

composer install --ignore-platform-reqs --no-dev

How do I find my username and password for the Bitnami installation I just spun up?

https://docs.bitnami.com/installer/apps/dreamfactory/#what-is-the-administrator-username-set-for-me-to-log-in-to-the-application-for-the-first-time

cURL Commands for Microsoft Command Line

The syntax is very close to Linux based systems, in fact, we recommend Git for Windows[1] but if you are using a different cURL interpreter you might need to format some of the calls a bit differently as double quotes need to be escaped, etc. Below is an example of how to modify these calls:

Example cURL request found in our tutorial section[2]

curl -i -k -3 -X POST "http://localhost:8080/api/v2/system/admin/session" \
 -d '{ "email" : "user@example.com", "password" : "pass123" }' \
 -H "Content-Type: application/json"

How it needs to be formatted on the Command Line:

curl -i -k -3 -X POST -H "Content-Type: application/json"  
-d "{ \"email\" : \"user@example.com\", \"password\" : \"password\" }" 
http://localhost:8080/api/v2/system/admin/session