<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TrcavArpas</id>
	<title>Microformats Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://microformats.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=TrcavArpas"/>
	<link rel="alternate" type="text/html" href="https://microformats.org/wiki/Special:Contributions/TrcavArpas"/>
	<updated>2026-04-25T03:37:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://microformats.org/wiki/index.php?title=rest/description&amp;diff=35873</id>
		<title>rest/description</title>
		<link rel="alternate" type="text/html" href="https://microformats.org/wiki/index.php?title=rest/description&amp;diff=35873"/>
		<updated>2008-12-20T00:38:33Z</updated>

		<summary type="html">&lt;p&gt;TrcavArpas: eltcaoloac&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;alnochi&lt;br /&gt;
= REST Service Description Conventions (RSDC) =&lt;br /&gt;
&lt;br /&gt;
The general consensus (as articulated by [http://groups.yahoo.com/group/rest-discuss/message/5394 Roy] and [http://groups.yahoo.com/group/rest-discuss/message/5391 Mark], though disputed by [http://groups.yahoo.com/group/rest-discuss/message/5404?threaded=1 others]) is that REST does not need a WSDL-style description language.  After all, we use the web without requiring directions, right?&lt;br /&gt;
&lt;br /&gt;
At the same time, there is still confusion about what actually works, and how.&lt;br /&gt;
&lt;br /&gt;
== Brainstorming ==&lt;br /&gt;
&lt;br /&gt;
In at least the Microformats case (&amp;quot;REX&amp;quot;) 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):&lt;br /&gt;
&lt;br /&gt;
===REST Service Description Conventions===&lt;br /&gt;
# information is always returned as (X)HTML hypertext&lt;br /&gt;
# inputs are always key-value pairs of strings (except for file uploads)&lt;br /&gt;
#there must be a way to discover all valid queries starting from the base URI&lt;br /&gt;
# forms MUST specify correct actions (e.g., PUT, DELETE), even if the actual implementation uses JavaScript&lt;br /&gt;
plus&lt;br /&gt;
# only hyperlinks that share the same root refer to part of the REST service&lt;br /&gt;
# body text associated with a control/hyperlink provides the human-readable description&lt;br /&gt;
&lt;br /&gt;
=== Sitemaps? ===&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
* [https://www.google.com/webmasters/sitemaps/docs/en/protocol.html Google Sitemap Protocol]&lt;br /&gt;
* [http://www.xml.com/pub/a/2005/04/06/restful.html Constructing vs. Traversing URIs]&lt;br /&gt;
&lt;br /&gt;
:Update - Google's sitemap has now been accepted as an [http://www.sitemaps.org/ industry standard].&lt;br /&gt;
&lt;br /&gt;
== Implementations (Twill) ==&lt;br /&gt;
[http://darcs.idyll.org/%7Et/projects/twill/README.html twill] is a web app testing language by Titus Brown that functions like a smart REST client!&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Twill is especially good at retrieving and submitting web forms. The form-related feature uses the [following] commands:&amp;quot;&lt;br /&gt;
;showforms: shows the forms contained in a web page. Unnamed forms get an ordinal number to use as a form ID &lt;br /&gt;
;formvalue &amp;lt;form_id&amp;gt; &amp;lt;name&amp;gt; &amp;lt;value&amp;gt;: fills a field of the specified form with a given value&lt;br /&gt;
;submit &amp;lt;button_id&amp;gt;: lets you press a Submit button, thus submitting the form&lt;br /&gt;
;formclear &amp;lt;form_id&amp;gt;: resets all the fields in a form&lt;br /&gt;
&lt;br /&gt;
In particular, Twill retrieves information in the following format:&lt;br /&gt;
 &amp;gt;&amp;gt; showforms&lt;br /&gt;
 Form #1&lt;br /&gt;
 ## __Name______ __Type___ __ID________ __Value__________________&lt;br /&gt;
      name         text      (None)&lt;br /&gt;
      password     password  (None)&lt;br /&gt;
      confirm      checkbox  (None)       [] of ['yes']&lt;br /&gt;
      color       radio     (None)       [] of ['green', 'blue', 'brown', 'ot ...&lt;br /&gt;
      size         select    (None)       ['Medium (10&amp;quot;)'] of ['Tiny (4&amp;quot;)', 'S ...&lt;br /&gt;
      toppings     select    (None)       ['cheese'] of ['cheese', 'pepperoni' ...&lt;br /&gt;
      time         hidden    (None)       1118768019.17&lt;br /&gt;
      1               submit    (None)       Submit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Those comment were extracted from ONLamp's [http://www.onlamp.com/lpt/a/6298 web testing] article, which also discusses:&lt;br /&gt;
;[http://pbp.berlios.de/ Python Browser Poseur (PBP)]: by Cory Dodt (came first)&lt;br /&gt;
;[http://www.crummy.com/software/BeautifulSoup Beautiful Soup]: a third-party HTML parsing tool&lt;br /&gt;
;[http://www.mems-exchange.org/software/quixote/ Quixote]: a nice, small Pythonic web framework&lt;br /&gt;
;John J. Lee's [http://wwwsearch.sourceforge.net/ websearch] tools:mechanize (inspired by Perl), ClientForm, and ClientCookie&lt;br /&gt;
;[http://pyparsing.sourceforge.net/ pyparsing]: object-oriented text processing&lt;br /&gt;
;[http://selenium.thoughtworks.com/index.html Selenium]: JavaScript framework for browser/Plone testing&lt;br /&gt;
;[http://agiletesting.blogspot.com/2005/02/articles-and-tutorials.html Agile Testing] blog: by Grig Gheorghiu.&lt;br /&gt;
&lt;br /&gt;
== Proposals/Examples ==&lt;br /&gt;
* [[rest/microformat-pub-protocol]] by toydi&lt;br /&gt;
* [http://pezra.barelyenough.org/blog/2008/01/restful-service-discovery-and-description/ RESTful Service Discovery and Description]&lt;br /&gt;
* Atom [http://www-128.ibm.com/developerworks/library/x-atompp1/ Service Documents] (was  [http://www.sixapart.com/developers/atom/protocol/atom_introspection.html Introspection])&lt;br /&gt;
** Chapter 8 of the [http://www.ietf.org/internet-drafts/draft-ietf-atompub-protocol-11.txt Atom Publishing Protocol]&lt;br /&gt;
* [http://bitworking.org/rfc/draft-gregorio-07.html#rfc.section.5.1 introspection] in the AtomAPI, by Joe Gregorio&lt;br /&gt;
* [http://www.xml.com/pub/a/2005/04/06/restful.html Constructing or Traversing URIs?] by Joe Gregorio&lt;br /&gt;
* [http://www.ietf.org/internet-drafts/draft-gregorio-uritemplate-00.txt URI Templates] by Joe Gregorio&lt;br /&gt;
* [https://wadl.dev.java.net/ WADL] - Web Application Description Language, by Marc Hadley&lt;br /&gt;
* REST [http://blog.tomayac.de/index.php?date=2007-06-14&amp;amp;time=15:06:52&amp;amp;perma=REST+Describe+%26+Comp.html Describe &amp;amp; Compile] using [http://tomayac.de/rest-describe/latest/RestDescribe.html REST Describe] parser&lt;br /&gt;
* REST Contracts [http://www.innoq.com/blog/st/2007/07/26/governance_and_rest.html and &amp;quot;Governance&amp;quot;]&lt;br /&gt;
* [http://blogs.sun.com/bblfish/entry/restful_semantic_web_services Restful semantic web services] (in the context of [http://en.wikipedia.org/wiki/SPARQL SPARQL])&lt;/div&gt;</summary>
		<author><name>TrcavArpas</name></author>
	</entry>
</feed>