title: REST - What exactly is meant by Uniform Interface?
body: <p><a href="http://en.wikipedia.org/wiki/Representational_state_transfer#Uniform_interface" rel="noreferrer">Wikipedia has:</a></p>
  <blockquote>
  <p><strong>Uniform interface</strong></p>
  <p>The uniform interface constraint is fundamental to the design of any REST service.[14] The uniform interface simplifies and decouples the architecture, which enables each part to evolve independently. The four guiding principles of this interface are:</p>
  <p><strong>Identification of resources</strong></p>
  <p>Individual resources are identified in requests, for example using URIs in web-based REST systems. The resources themselves are conceptually separate from the representations that are returned to the client. For example, the server may send data from its database as HTML, XML or JSON, none of which are the server's internal representation, and it is the same one resource regardless.</p>
  <p><strong>Manipulation of resources through these representations</strong></p>
  <p>When a client holds a representation of a resource, including any metadata attached, it has enough information to modify or delete the resource.</p>
  <p><strong>Self-descriptive messages</strong></p>
  <p>Each message includes enough information to describe how to process the message. For example, which parser to invoke may be specified by an Internet media type (previously known as a MIME type). Responses also explicitly indicate their cacheability.</p>
  <p><strong>Hypermedia as the engine of application state (A.K.A. HATEOAS)</strong></p>
  <p>Clients make state transitions only through actions that are dynamically identified within hypermedia by the server (e.g., by hyperlinks within hypertext). Except for simple fixed entry points to the application, a client does not assume that any particular action is available for any particular resources beyond those described in representations previously received from the server.</p>
  </blockquote>
  <p>I'm listening to a lecture on the subject and the lecturer has said:</p>
  <blockquote>
  <p>&quot;When someone comes up to our API, if you are able to get a customer object and you know there are order objects, you should be able to get the order objects with the same pattern that you got the customer objects from. These URI's are going to look like each other.&quot;</p>
  </blockquote>
  <p><strong>This strikes me as wrong.</strong> It's not so much about what the URI's look like or that there is consistency as it is the way in which the URI's are used (identify resources, manipulate the resources through representations, self-descriptive messages, and hateoas).</p>
  <p>I don't think that's what Uniform Interface means at all. What exactly does it mean?</p>