REST for the developer
If you are a developer who is starting to work with REST services, you need to know the details of that style of service. For an introduction to REST, see “Architectural styles in web services.”
Resource, representation, URI, and action
- At a given time, a resource, such as a database row of employee data, has a representation. A representation might be a set of program values that specify the employee number, title, and salary.
- The resource also has a universal resource indicator (URI), which is a unique name, such as http://www.example.com/gateway/employee/0020. In this case, the employee number is 0020. In general, the URI gives a name to the resource. Also, the URI provides the main detail that is necessary to access a REST service.
- An action indicates what is to be done with the resource. The possible actions are few: the resource can be created, read, updated, or deleted.
The requester of a REST service identifies a resource and specifies an action. If the action involves creating or updating a resource, the requester provides a representation of the resource.
Path variables and query strings
- The URI can include path variables, which are variables
whose values identify the resource in a direct way, without requiring
that a service process the input to determine the resource. In the
following example, the employee number 0020 is the value of a path
variable:
http://www.example.com/gateway/employee/0020Path variables are appropriate in most cases. You might use multiple path-variable values, with one separated from the next by a forward slash. That use of multiple values suggests a hierarchical relationship. For example, the path-variable values in the following URI identify a corporate division (Consumer) and, within that division, a corporate department (Sales):http://www.example.com/gateway/employee/Consumer/SalesWhen you write code to access third-party REST services in EGL, you create a URI template, which is an outline of the last part of a URI. Here is an example template, such thatemployeeNumberis a path variable:"/gateway/employee/{employeeNumber}"You identify a path variable in a URI template by embedding the variable name in curly braces.
- In relation to a GET operation, the URI can be supplemented with
a query string, which is a set of name-value pairs. In
the following example, the question mark (?) precedes a query string,
and each name-value pair is separated from the next by an ampersand
(&):
http://www.example.com/gateway/employee?division=Consumer&department=SalesA query variable is a placeholder for a value in the query string. When you create a URI template in EGL, you specify query variables by using the same syntax as for path variables. In the following example,divisionNameanddepartmentNameare query variables:"/gateway/employee?division={divisionName}&department={departmentName}"Compared to the use of path variables, the use of query strings is considered less ideal—less RESTful. Use of query strings is most appropriate when a service uses the name-value pairs as input to the service logic. In that situation, the logic might use the input to determine what resource to access.