Hacker News new | ask | show | jobs
by jjtheblunt 1455 days ago
Doesn't the Go standard library do what you mentioned above?
2 comments

It kinda does but there's a lot of boilerplate that goes in before we actually get to the app logic. And, understandably, there's no structure provided by the Go stdlib. Once I made many projects with just using stdlib, I started taking common packages out. And Copper is essentially that. I can start writing my app code with minimal setup / boilerplate.
Go’s HTTP routing is very primitive. That’s one big area that I’ve always needed to use a 3rd party dependency. The main issue is that it doesn’t support placeholder values in route paths.
>The main issue is that it doesn’t support placeholder values

Can you elaborate? Like give me an example of a route path that uses placeholder values? I use Go to build web apps too and I really don't see a need for anything other than the standard library.

GET /{username}
You definitely don't need a framework to get the user name out of a URL, you need one line of code.
And what would that line of code be? As far as I am aware you have to parse the URL string, and it only gets more complicated when you add more URL parameters. Which definitely leads to boilerplate code shared across projects.
It's also not especially performant to do the naive (i.e. short) implementation like this, since you'll likely end up parsing/processing path elements left-to-right rather than in whatever order makes the most sense for your loading.
Assuming the url is formatted correctly:

  strings.Split(urlString, "user/")[1]
https://go.dev/play/p/tWi-Ge0CA1X

That's one way to do it.

>more URL parameters

I thought thats what http.Request.ParseForm() was for (assuming correct formatting)