Hi David, You got it! For the redirection, you can achieve it by using the org.restlet.Redirector class or by manually invoking the Response.redirect*() methods.
Best regards, Jerome > -----Message d'origine----- > De : David Rauschenbach [mailto:[EMAIL PROTECTED] > Envoyé : jeudi 28 décembre 2006 16:53 > À : Jerome Louvel > Cc : [email protected] > Objet : Re: Restlet base URI versus relative path > > Jerome, > > Aha, thanks for that clarification. If I understand things > correctly, I can adopt HTTP/WebDAV collection principles by > using a trailing slash in my registrations? > > Hello "resource" : > > container.getDefaultHost().attach("/hello", restlet); > > > > Versus Hello "collection": > > container.getDefaultHost().attach("/hello/", myRestlet); > > > I guess the only last thing needed is a redirect handler so > that "/hello" requests get redirected to "/hello/". So if all > those assumptions are correct, then it looks like this > framework can be made WebDAV-friendly, with a bit of manual > configuration. > > Thanks, > David > > > > On Dec 28, 2006, at 6:42 AM, Jerome Louvel wrote: > > > > 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 > > > >

