http icon indicating copy to clipboard operation
http copied to clipboard

Trailing slash handling not implemented

Open waywardmonkeys opened this issue 11 years ago • 2 comments

None of this section from the docs is actually implemented ...

  • There seems to be fairly broad agreement that having distinct meanings for /foo and /foo/ is a Bad Thing, which makes sense since it would be difficult for a user to predict the difference. However, it is often useful to ensure that they both map to the same resource rather than having one work and the other get a 404 error.

    add-resource accepts a slash: keyword argument. When true (the default), add-resource will automatically map the child resource to both the given URL prefix and to the same URL with a trailing slash added. That is,

       add-resource(parent, "foo/bar", child)
    

    will map child to both foo/bar and foo/bar/. To change this behavior pass the slash: keyword argument:

    slash: #"canonical" Make the trailing slash URL prefix canonical (by redirecting the one without the trailing slash). Think "slash is canonical".

    slash: #"copy" Map the given resource to both the given URL and the URL with the trailing slash. Think "slash is a copy".

    slash: #"redirect" (the default) Redirect the trailing slash version of the URL to the one with no trailing slash. Think "slash is redirected".

    slash: #f Don't map the trailing slash URL prefix to any resource. Use this carefully since it can cause confusing results for users.

waywardmonkeys avatar May 07 '14 09:05 waywardmonkeys

So do you think this behavior would be worth having? I guess I removed it at some point when I rewrote the routing code. I think it would be trivial for users to do themselves with a small helper function so I'm inclined to just remove the doc and close this bug.

cgay avatar Sep 08 '14 04:09 cgay

I think it should be better than it is now... I will look at what Flask or ithers do.

waywardmonkeys avatar Sep 08 '14 05:09 waywardmonkeys