REST Service Description Conventions (RSDC)
The general consensus (as articulated by Roy and Mark, though disputed by others) is that REST does not need a WSDL-style description language. After all, we use the web without requiring directions, right?
At the same time, there is still confusion about what actually works, and how.
In at least the Microformats case ("REX") where you're assuming a browser, we can presumably get by with the following constraints (in addition to REST itself, of course; e.g., properly-formed URIs):
REST Service Description Conventions
- information is always returned as (X)HTML hypertext
- inputs are always key-value pairs of strings (except for file uploads)
- there must be a way to discover all valid queries starting from the base URI
- only hyperlinks that share the same root refer to part of the REST service
- body text associated with a control/hyperlink provides the human-readable description
Arguably a sitemap is one way of presenting a list of the resources available on particular site, even if it isn't quite the same as a recipe for URL construction (which arguably is more useful in this context).
- Update - Google's sitemap has now been accepted as an industry standard.
twill is a web app testing language by Titus Brown that functions like a smart REST client!
"Twill is especially good at retrieving and submitting web forms. The form-related feature uses the [following] commands:"
- shows the forms contained in a web page. Unnamed forms get an ordinal number to use as a form ID
- formvalue <form_id> <name> <value>
- fills a field of the specified form with a given value
- submit <button_id>
- lets you press a Submit button, thus submitting the form
- formclear <form_id>
- resets all the fields in a form
In particular, Twill retrieves information in the following format:
>> showforms Form #1 ## __Name______ __Type___ __ID________ __Value__________________ name text (None) password password (None) confirm checkbox (None)  of ['yes'] color radio (None)  of ['green', 'blue', 'brown', 'ot ... size select (None) ['Medium (10")'] of ['Tiny (4")', 'S ... toppings select (None) ['cheese'] of ['cheese', 'pepperoni' ... time hidden (None) 1118768019.17 1 submit (None) Submit
Those comment were extracted from ONLamp's web testing article, which also discusses:
- Python Browser Poseur (PBP)
- by Cory Dodt (came first)
- Beautiful Soup
- a third-party HTML parsing tool
- a nice, small Pythonic web framework
- John J. Lee's websearch tools
- mechanize (inspired by Perl), ClientForm, and ClientCookie
- object-oriented text processing
- Agile Testing blog
- by Grig Gheorghiu.
- rest/microformat-pub-protocol by toydi
- RESTful Service Discovery and Description
- Atom Service Documents (was Introspection)
- Chapter 8 of the Atom Publishing Protocol
- introspection in the AtomAPI, by Joe Gregorio
- Constructing or Traversing URIs? by Joe Gregorio
- URI Templates by Joe Gregorio
- WADL - Web Application Description Language, by Marc Hadley
- REST Describe & Compile using REST Describe parser
- REST Contracts and "Governance"
- Restful semantic web services (in the context of SPARQL)