Building Blocks for Representations
Representations of references and of types are used to make up other representations.
Resources to represent a single Domain Object
Method \ Resource |
Object |
Property |
Collection |
Action |
Action/invoke |
---|---|---|---|---|---|
GET |
|||||
PUT |
n/a - 405 |
||||
DELETE |
n/a - 405 |
n/a - 405 |
n/a - 405 |
||
POST |
n/a - 405 |
n/a - 405 |
n/a - 405 |
Notes:
- Action has an additional '/invoke subresource that is used for invoking the action
- A 405 ('method not allowed') is returned where a resource is available for some HTTP methods but not for the one specified
- all validation (except that of individual parameter arguments) is performed immediately prior to the interaction
- that is, there is no specific resource to validate a property change, adding/removing from collections, or the full set of action arguments
- failed validation is indicated by the return code 412 "precondition failed"
- if required, individual parameter arguments can be validated by using PUT on the Action
- ?? a custom header can be used to request validation only ??
- the distinction betweeen action validation and action parameters validation is that the former validates arguments for all parameters, whereas the latter validate an argument for only a single parameter.
Example Resources
Resource Type |
Resource endpoint |
GET |
PUT |
DELETE |
POST |
---|---|---|---|---|---|
object |
http://localhost:8080/com.mycompany.Order|123 |
Y |
Y |
. |
. |
property |
http://localhost:8080/com.mycompany.Order|123/createdOn |
Y |
Y |
Y |
. |
collection |
http://localhost:8080/com.mycompany.Order|123/items |
Y |
Y |
Y |
Y |
action |
http://localhost:8080/com.mycompany.Order|123/placeOrder |
Y |
Y |
. |
. |
action invocation |
http://localhost:8080/com.mycompany.Order|123/placeOrder/invoke |
Y |
. |
. |
Y |
Resource to represent the set of available (registered) Domain Services
The 'services' resource is a well-known endpoint from which a representation of the collection of domain services is obtained. It is analogous to index.html.
Resources to represent a collection of Domain Objects
Collections of domain objects can be returned either as the result of an action invocation, or as the result of obtaining the contents of an object collection. In both cases the usual JSON syntax for a list is used.
Resources to represent the currently logged on user
The 'user' resource is a well-known endpoint from which a representation of the currently logged-in user can be obtained.
Resource to represent a type
The 'types/application/vnd+xxx' resource describes the type of an object (from the metamodel).