Hi, Initially, I wanted to go with the dots, however the backwards compatibility problem would force us to either use a different key than "spaces" and deprecate "spaces" or to introduce versioning (i.e. path prefix like /rest/v1/wikis...), as Vincent said. However, the multiple "spaces" (I think this is what you meant, Vincent) alternative has more (I`d say only) advantages than disadvantages. So the URL would be: /xwiki/rest/wikis/xwiki/spaces/Europe/spaces/France/spaces/Paris/pages/WebHome + is 100% backwards compatible ++ old apps will only be able to access the first level, as they were designed ++ No mixup between space name (unescaped) vs space reference (escaped) ++ As a result, no need to introduce any versioningjust yet + indeed is much more restful, since at each step (e.g. France) you can have either subspaces (e.g. Paris) or pages (e.g. WebHome or any other terminal page) ++ in other words, the resource hierarchy is better exposed + Bonus, we stick to the good old "/" separator + Reflects perfectly the expansion of the model that we are doing through NS +1 for dots, i.e. /xwiki/rest/wikis/xwiki/spaces/Europe.France.Paris/pages/WebHome - longer URLs for long paths So I`m +1 for the "multiple spaces" option. Thanks, Eduard On Thu, Jul 2, 2015 at 6:14 PM, [email protected] <[email protected]> wrote:
I think we should decide what we want independently of the REST framework impl, to be the most restful possible.
Then we check how to do it in the REST fwk we currently use (restlet) and if not possible then we should check if it’s possible with some other REST fwk (jersey for example).
At worse, if we don’t want to wait we will need at least to introduce API versioning so that we can change it later on easily.
There’s also the suggestion I proposed with several “pages” elements which seems potentially more restful than dots to me (but leads to longer urls).
So IMO you should research more about what is the RESTful approach to this before we can decide anything.
Thanks -Vincent
On 2 Jul 2015 at 15:57:53, Guillaume Louis-Marie Delhumeau ( [email protected](mailto:[email protected])) wrote:
Hi.
This proposal is already explained in http://jira.xwiki.org/browse/XWIKI-12206. I think it is an important issue to fix because it blocks http://jira.xwiki.org/browse/XWIKI-12198 (Ensure annotations work on nested spaces).
The current REST URL for a space is: /xwiki/rest/wikis/xwiki/spaces/Europe
and for a page: /xwiki/rest/wikis/xwiki/spaces/Europe/pages/WebHome
The idea is to use dots as space separator in the REST URLs in the case of nested spaces. Example: /xwiki/rest/wikis/xwiki/spaces/Europe.France.Paris
For spaces containing dots in their name, we simply escape them with \ (%5C).
It has the drawback to not have a similar URL than the standard action, ie: /xwiki/bin/view/Europe/France/Paris/WebHome - for view action /xwiki/rest/wikis/xwiki/spaces/Europe.France.Paris/pages/WebHome - for REST action
But it does not seem possible to handle "/" in path parameters with Restlet. ie: /xwiki/rest/wikis/xwiki/spaces/Europe/France/Paris/pages/WebHome is not supported by Restlet.
After a talk with some Restlet committers, they confirm me that we have to write our own URL router to handle this. I don't know if it worth the pain although I don't have evaluated it.
So I guess this proposal using dots is the best option, but I'm free to talk about this.
Thanks, Guillaume
-- Guillaume Delhumeau ([email protected]) Research & Development Engineer at XWiki SAS Committer on the XWiki.org project _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs
devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs