Hi Jerome,
Cheers. Thanks for the FAQ entry. For whatever reason, I couldn't see
the (now obvious) solution.
From the FAQ:
"Note that after doing this, your Router won't accept URI with query
strings going to this Resource."
Big bummer. Maybe this could be a RFE. Ie. strict matching except for
the query string.
"To solve this, you can explicitely allow the query part in your URI
template:
Route route = router.attach("/users/{user}?{query}", UserResource.class);"
Won't this then _require_ a query string to be attached to the URL? Or
at least require the question mark? In this case, you would need an
additional router.attach("/users/{user}") if you wanted the query string
part to be optional?
Thanks again,
Adam
Jerome Louvel wrote:
Hi Adam,
This is indeed a frequently asked question, but it didn't have a FAQ entry
yet :) So I just had to write it:
http://www.restlet.org/documentation/1.0/faq#24
Best regards,
Jerome
-----Message d'origine-----
De : Adam Taft [mailto:[EMAIL PROTECTED]
Envoyé : samedi 16 juin 2007 02:16
À : [email protected]
Objet : Preventing Greedy URL Matching
Hi,
I'm sure this has got to be a FAQ for Restlet, so sorry in
advance for
such a simple question...
I've got a restlet attached to an example URL like:
/example/{id}/
I want the library to return a 404 for URLs with anything
trailing. Ie.
/example/{id}/foo
/example/{id}/whatever/xyz/blah...
How can I make the matching more "strict" and thus not accept
the extra
path. I can do this manually per request by looking at the
request.getResourceRef().getRemainingPart(). But it's seems kind of
silly to have to do this on every request. Seems like it would be
better a part of the Router matching or something.
Thanks for any advice on this.
By the way, getRemainingPart() returns an empty string for a
request to
/example/{id}/ I'm wondering if this shouldn't return NULL instead.
Related, getSegments() on the above returns: [example, $id, ]
See the
extra item in the segment list?? Yuck.
Thanks,
Adam