Re:Better HTTP server routing in Go 1.22
by FiloSottile on Monday October 16, 2023 @10:32AM
(#37900379)
From the proposal:
"There is one last, special wildcard: {$} matches only the end of the URL, allowing writing a pattern that ends in slash but does not match all extensions of that path. For example, the pattern /{$} matches the root page / but (unlike the pattern / today) does not match a request for /anythingelse."
Ahhh how did I miss that!!
That is amazing. Goodbye gorilla mux.
Re:Better HTTP server routing in Go 1.22
by drdaeman on Monday October 16, 2023 @04:37PM
(#37906209)
Ideally, this should be the default behavior, i.e. "/foo/" matching only "/foo/" and nothing else. And if one wants a prefix they should be able to explicitly spell it out like "/foo/{**}".
But that’s not backwards-compatible, sadly, so this is going to remain a historical wart.
Re:Better HTTP server routing in Go 1.22
by mariusor on Monday October 16, 2023 @10:11AM
(#37900142)
I would say that unless specified differently this bit of the documentation[1] still applies (second paragraph):
> Longer patterns take precedence over shorter ones,
Re:Better HTTP server routing in Go 1.22
by jbamsterdam on Monday October 16, 2023 @11:08AM
(#37900875)
No, it does not. The length of the pattern isn't important anymore, only whether it overlaps with other patterns.
Re:Better HTTP server routing in Go 1.22
by mariusor on Monday October 16, 2023 @01:16PM
(#37903033)
That would be a breaking API change in my opinion. I bet you the length criterion will still apply for path patterns that don't include placeholders, even if not specifically mentioned in the proposal.
[edit] Heh, I guess you'd know better. :D The comparison between the hn username and github username resolved favourably in the end. :P
So `mux.HandleFunc("/"...)` always handles _everything_.
And there is no easy way to say "no, just handle exact matches, plus maybe ? queries". As gorilla/mux does.
I don't think that is changed in the new go?