Dear all,
I've committed a first implementation of the RESTful API as described on
http://dev.xwiki.org/xwiki/bin/view/Design/RestfulAPI
Not all the URIs are working but pages and translations are.
You can:
* GET /
* GET /spaces
* GET /spaces/{spaceId}/pages
* GET|PUT /spaces/{spaceId}/pages/{pageId}
* GET|PUT /spaces/{spaceId}/pages/{pageId}/translations/{translationId}
PUT will create/modify the corresponding page.
You can use curl to interoperate with the API. Some examples:
* curl -u Admin:admin -X PUT -d "Hello world" -H "Content-Type:
text/plain"
http://localhost:8080/xwiki/rest/spaces/Main/pages/WebHome
Will set the content of Main.WebHome to "Hello world"
* curl -u Admin:admin -X PUT -d @text.txt -H "Content-Type: text/plain"
http://localhost:8080/xwiki/rest/spaces/Main/pages/WebHome
Will set the Main.WebHome content to whatever is writen in the text.txt
file.
* curl -u Admin:admin -X PUT -d @page.xml -H "Content-Type:
application/xml"
http://localhost:8080/xwiki/rest/spaces/Main/pages/WebHome
Will set the Main.WebHome attributes to whatever is written in the
page.xml. The xml file must conform to the structure described in the
design page. This allows to change the content, the title and to
reparent the page.
* curl -u Admin:admin -X PUT -d @text.txt -H "Content-Type: text/plain"
http://localhost:8080/xwiki/rest/spaces/Not/pages/Existing
Will create the Not.Existing page and set its content to whatever is
writen in the text.txt file.
Currently the implementation is in the sandbox and is available for
public review
(
http://svn.xwiki.org/svnroot/xwiki/sandbox/xwiki-core-rest/). It uses
the XStream library (
http://xstream.codehaus.org) for XML
serialization/deserialization of data types. Very handy.
Comments are welcome.
-Fabio