News for hackers. Stuff that matters.
Re:Better HTTP server routing in Go 1.22 by shp0ngle on Monday October 16, 2023 @10:07AM (#37900080)
One thing I don't like about default ServeMux is that addresses are prefixes.

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?

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."

Re:Better HTTP server routing in Go 1.22 by yankput on Monday October 16, 2023 @02:53PM (#37904390)
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,

https://pkg.go.dev/net/http#ServeMux

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

Re:Better HTTP server routing in Go 1.22 by yankput on Monday October 16, 2023 @03:02PM (#37904554)
As the other person says, how comes it is not a backwards incompatible change?