David,

Thanks for the feed-back, you are bringing up important points that I need
to clarify. 

First, I encourage you to upgrade to RC1 as the API in this area changed:
 - Request.baseRef -> Request.resourceRef.baseRef
 - Request.relativePart -> Request.resourceRef.remainingPart
Note that there is also a Reference.relativePart property.

Now, it is important to realize that the routing done via Router and Route
classes is working on URIs at the string level. Each time the route is
accepted and followed, the base URI (Request.resourceRef.baseRef) related to
the resource URI (Request.resourceRef) is updated. It stricly contains the
characters match by the URI pattern of the latest route.

So, if your URI pattern didn't match the trailing slash, the base URI won't
contain a trailing slash. If you need to use the base URI to compute
relative URIs, then I suggest that you change your URI pattern to include a
slash at the end.

Example:
 - resource URI: http://<server:port>/persons/1
 - virtual host: http://<server:port>

If your URI pattern is "/persons":
 - base URI: "/persons"
 - remaining part: "/1"
 - relative part: "persons/1"

If your URI pattern is "/persons/":
 - base URI: "/persons/"
 - remaining part: "1"
 - relative part: "1"

Let me know if you need more clarifications. 

Best regards,
Jerome  

> -----Original Message-----
> From : David Rauschenbach [mailto:[EMAIL PROTECTED] 
> Date : mercredi 27 décembre 2006 17:32
> To : [EMAIL PROTECTED]
> Object : Restlet base URI versus relative path
> 
> Hello,
> 
> I've been using the restlet API and Noelios container for a 
> few weeks  
> now, with satisfactory results. This is fine work, and a useful  
> abstraction.
> 
> It seems wrong to me that Request.getBaseRef() does not return a  
> trailing slash, and especially wrong that Request.getResourceRef()  
> begins with a slash. This concept is in particular dis-harmony with  
> WebDAV, which is the extension of the HTTP spec that extends it for  
> read/write operations.
> 
> In WebDAV, as well as in industry current-best-practices such as  
> default Apache configurations, trailing shashes are formalized to  
> mean "resource collection", such as directories. The same goes for  
> Rails and ActiveResource/REST, where a relative path of person with  
> id=1 should be relativePart="1" and baseURI="http://<server:port>/ 
> persons/" or whatever, the case of a url "http://<server:port>/ 
> persons/1".
> 
> David

Reply via email to