Blog

Labels
AJAX(112) App Studio(7) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(177) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(8) OAuth Scopes(1) OAuth2(11) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(10) PKCE(2) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(179) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(80) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(2) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Tuesday, October 2, 2012PrintSubscribe
Video–Creating Many-to-Many Fields
Tuesday, October 2, 2012PrintSubscribe
Video–Configuring Charts
Tuesday, October 2, 2012PrintSubscribe
Unlocking REST URIs of a Web App

Application sever embedded in a web app created with Code On Time allows programmatic access to data controllers. By default, all data controller URIs (Uniform Resource Identifiers) are locked down.

For example, if you try navigating to http://demo.codeontime.com/northwind/appservices/MyProducts?SupplierCompanyName=Tokyo%20Traders, then you will see a prompt from the application server to enter a user name and password.

A browser prompt to enter user credentials is displayed in response to an attempt to access a protected URI of the built-in application server

Enter admin/admin123% or user/user123% and you will see the following XML data.

<?xml version="1.0" encoding="utf-8"?>
<MyProducts totalRowCount="3" pageSize="100" pageIndex="0" rowCount="3">
  <items>
    <item ProductName="Mishi Kobe Niku" SupplierID="4" CategoryID="6" 
          QuantityPerUnit="18 - 500 g pkgs." UnitPrice="$97.00" UnitsInStock="29" 
          UnitsOnOrder="0" ReorderLevel="0" Discontinued="True" ProductID="9" 
          SupplierCompanyName="Tokyo Traders" CategoryCategoryName="Meat/Poultry" />
    <item ProductName="Ikura" SupplierID="4" CategoryID="8" 
          QuantityPerUnit="12 - 200 ml jars" UnitPrice="$31.00" UnitsInStock="31" 
          UnitsOnOrder="0" ReorderLevel="0" Discontinued="False" ProductID="10" 
          SupplierCompanyName="Tokyo Traders" CategoryCategoryName="Seafood" />
    <item ProductName="Longlife Tofu" SupplierID="4" CategoryID="7" 
          QuantityPerUnit="5 kg pkg." UnitPrice="$10.00" UnitsInStock="4" 
          UnitsOnOrder="20" ReorderLevel="5" Discontinued="False" ProductID="74" 
          SupplierCompanyName="Tokyo Traders" CategoryCategoryName="Produce" />
  </items>
</MyProducts>

A similar prompt will be displayed if you generate an app with Code On Time and access any data controller. If a user account is validated successfully then an HTTP error 404 is displayed. It indicates that a resource is not found. The application sever refuses to reveal any data.

You must configure access to the URIs for each data controller explicitly to enable request processing by the built-in application server.

Select a data controller in Project Designer and enter configuration parameters in the field “Representational State Transfer (REST) Configuration”.

REST configuration of a data controller must list at least one “Uri” parameter. A minimal configuration with a single “Uri” parameter is shown next:

Uri: .

The parameter is a regular expression evaluated against a web request URL targeting an application server of a web app. The “.” in the configuration will match the URI to any URL that contains at least one character.

A more restrictive configuration will allow listing an entire catalog of products but will now allow any arguments in the URL specified after the “?”.

Uri: appservices/Products$

The following URI configuration will allow a full listing of product catalog or a list of products filtered by SupplierCompanyName field. No other URLs will be allowed in a request.

Uri: Products$

Uri: Products?SupplierCompanyName=.+$

If multiple URIs are specified then a built-in application server will evaluate each of them in the order of definition. The application server will produce a response as soon as the first configuration URI has  a case-insensitive match to a web request URL.

Each “Uri” parameter may be followed with the following optional parameters providing additional restrictions.

Parameter Description
Method A comma separated list of HTTP methods that can be specified by a web request.

GET, POST, PUT, and DELETE methods are supported.
Users A comma-separated list of users allowed to access this URI. Application server will allow only authenticated users to access the URI if the parameter is not defined.

Symbol “?” will allow authenticated and anonymous users.
Symbol “*” will allow authenticated users only.
Roles A comma-separated list of application roles that an authenticated user must have in order to access the URI.
Ssl Indicates that the URI can only be accessed via a secure SSL connection.

The default value is False.
Xml Indicates if an XML response can be returned to a client.

The default value is True.
Json Indicates if a JSON response can be returned to a client.

The default value is True.

This example will allow only a JSON response to HTTP GET requests of any data controller URI by authenticated users in the roles of Administrators or Power Users.

Uri: .
Method: GET
Users: *
Roles: Administrators, Power Users
Xml: False
JSON: True