Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In this context, engine is an abstract term meaning the force that produces a result. By itself it doesn't mean anything but it does connect the force (hypermedia) with the result (application state).

Application State

For our purposes, application state refers to what the client is currently seeing with regard to the resource accessed by a URI. An important part of application state is not simply what static content is available to the client at a given time, but also what links are available that inform the client of choices that can be made. These links enable the client to change the state of the application (i.e., when I link is activated, the client will receive new static and hypermedia content, thus changing the state of the client). Again, typical website visitors engage in this activity all the time. The relevant question is, how does the server know what content to return? More importantly, how does the server know what links to return?

In many data systems, clients and servers share state (i.e, the system is stateful). This is how traditional OpenInsight applications are designed. For instance, if a form reads a row, that row is locked and the server maintains the state of this lock so other clients are unable to modify this row. As described in the What is Rest? article, RESTful APis are supposed to be stateless. This means that once the server provides a client with a resource, it no longer cares what the client knows or what the client is doing with the resource data.