The problem with the automatic redirection is shown the bug I filed
there is a "{path}" and a "{path}/" and its not like in a regular web
server where you can just look at the resource on the filesystem and if
its a directory redirect adding a trailing /.
Idea 1:
algoritmn something like:
if a URI matches several @Paths use the longest one
if a one @Path exists that matches the request URI use it
else if request URI does not end in a / and a @Path exists that matches
the request URI+"/" do a redirect to that URL
else return 404
Thoughts: Not sure if it works
Idea 2:
Path regular expressions: @Path("xyz/?",regexp=true)
if a reqest comes in for xyz redirect to xyz/
if a request comes in for xyz/ handle it
(its not cache friendly having 2 URLs for the same resource)
Thoughts: Regular expression syntax could be interesting but shouldnt be
the default.
Idea 3
Extra attribute in path
@Path(value="xyz",directory=true)
if a reqest comes in for xyz redirect to xyz/
if a request comes in for xyz/ handle it
Thoughts: Fairly simple and understandable (I think)
Idea 4:
I saw talk of a @Location annotation although I think the name
@Redirect would be more understandable.
@Path("xyz")
@Redirect("xyz/")
public void redirectXyz()
{
}
Note: void methods make sense in this case.
Thoughts: could have too many methods that only do redirects (see next
idea for a possible solution to this).
Idea 5:
Implement filters before the request and allow the developer to decide
@PreFilter
public Response preFilter(...)
{
Response response=null;
//if the response is null carry on with the request
//if not halt the request processing and generate the response for the
client
return response;
}
This is really another idea but since Im on the subject of filters how
about:
@PostFilter
public void closeSession()
{
//Tidy up
//see the Open Session in View pattern for Hibernate for the reasons
for this.
}
To keep it really simple my votes are for no automatic redirection, and
I like the idea of the filters.
Andy Bailey
On Wed, 2008-02-06 at 10:42 +0100, Paul Sandoz wrote:
> Hi,
>
> Jersey attempts to support automatic redirection by default. But there
> are some problems highlighted here [1]. The redirection implementation
> is a little buggy but also it can cause some surprises for people when
> it is working correctly (for example when using 'curl' without the -L
> option).
>
> This makes me think that by default this functionality should be
> switched off. What do others think?
>
> Paul.
>
> [1]
> https://jersey.dev.java.net/servlets/BrowseList?list=users&by=thread&from=1028195
> https://jersey.dev.java.net/issues/show_bug.cgi?id=38
>