Top 23 Go HTTP Projects
-
Caddy
Fast, multi-platform web server with automatic HTTPS
Project mention: Looking for an idiot-friendly webserver for pi-zero. | reddit.com/r/selfhosted | 2021-03-06Recommendation first, I’d say try out caddy server. Seriously the simplest httpd server with built in tls. https://caddyserver.com
-
Vegeta
HTTP load testing tool and library. It's over 9000!
As with most things in life, DragonBallZ is the answer: https://github.com/tsenart/vegeta
-
Scout
Get performance insights in less than 4 minutes. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.
-
mux
A powerful HTTP router and URL matcher for building Go web servers with 🦍
After installing Go and setting up my GOPATH, I'd like to install the gorilla/mux package. So I do
-
httprouter
A high performance HTTP request router that scales well
Another common reason to decide against using an existing component is when it doesn't satisfy your requirements. For this project, I needed to prioritize the performance of the web server, and so I knew I needed an HTTP framework that performed well across a number of benchmarks, but I also needed some unusual capabilities such as being able to swap out the router in real-time. In the end, I decided on a hybrid approach for the web server, choosing to build a custom framework around the well-loved httprouter, which granted the majority of what I needed, and had some extremely well thought-out integration points that made it easy for me to build on top of it. In the case of the message bus, I also had a requirement of decentralization, which the majority of available projects are not.
-
kratos
A Go framework for microservices.
Kratos errgroup
-
wuzz
Interactive cli tool for HTTP inspection
-
chi
lightweight, idiomatic and composable router for building Go HTTP services
To me, software is art, and I intentionally spent so much time to craft chi to the create a router with the absolute best ergonomics and developer experience. With forced-SIV, I'm unable to fulfill this purpose and now feel deeply uninspired. If proposal 44550 is rejected, I will most likely archive go-chi/chi and create a new repository at go-chi/mux and start from v0 and never leave it. https://github.com/go-chi/chi/issues/561#issuecomment-787462275
-
inlets
Cloud Native Tunnel for APIs
-
chisel
A fast TCP/UDP tunnel over HTTP (by jpillora)
Project mention: Is it possible to ngrok multiple ports to the same host? E.g. host:8080/host:5001 -> localhost:8080/localhost:5001? | reddit.com/r/webdev | 2021-01-25Use chisel in combination with frp. This is a lot more complicated, but the end result is really the same as localtunnel's.
-
RoadRunner
High-performance PHP application server, load-balancer and process manager written in Golang
-
hetty
Hetty is an HTTP toolkit for security research.
dstotijn/hetty (Go): Hetty is an HTTP toolkit for security research. It aims to become an open source alternative to commercial software like Burp Suite Pro, with powerful features tailored to the needs of the infosec and bug bounty community.
-
statik
Embed files into a Go executable
> I've had this a few times, most recently with "how do I add this data file to my binary". At least that one made it to master now, and will be in 1.16!
And before 1.16, there is statik: https://github.com/rakyll/statik.
-
bombardier
Fast cross-platform HTTP benchmarking tool written in Go
Bombardier
-
fortio
Fortio load testing library, command line tool, advanced echo server and web UI in go (golang). Allows to specify a set query-per-second load and record latency histograms and other useful stats.
-
hoverfly
Lightweight service virtualization/API simulation tool for developers and testers
-
httpexpect
End-to-end HTTP and REST API testing for Go.
Project mention: Hacktoberfest: 69 Beginner-Friendly Projects You Can Contribute To | dev.to | 2020-09-29https://github.com/gavv/httpexpect End-to-end HTTP and REST API testing for Go.
-
Armor
Uncomplicated, modern HTTP server
-
sish
HTTP(S)/WS(S)/TCP Tunnels to localhost using only SSH.
-
faasd
A lightweight & portable faas engine
-
gock
HTTP traffic mocking and testing made easy in Go ༼ʘ̚ل͜ʘ̚༽
-
handlers
A collection of useful middleware for Go HTTP services & web applications 🛃
Study the generic reader/writer implementations in the io module. (On my system, those sources are in /usr/lib/go/src/io.) The io.Reader and io.Writer interfaces are very simple, but very powerful because of how they allow composition. A shell pipeline like `cat somefile.dat | base64 -d | gzip -d | jq .` can be quite directly translated into chained io.Readers and io.Writers.
Another example of this is how HTTP middlewares chain together, see for example all the middlewares in https://github.com/gorilla/handlers. All of these exhibit one particular quality of idiomatic Go code: a preference for composition over inheritance.
Another quality of idiomatic Go code is that concurrent algorithms prefer channels over locking mechanisms (unless the performance penalty of using channels is too severe). I don't have immediate examples coming to mind on this one though, since the use of channels and mutexes tends to be quite intertwined with the algorithm in question.
-
gentleman
Full-featured, plugin-driven, extensible HTTP client toolkit for Go
-
schema
Package gorilla/schema fills a struct with form values. (by gorilla)
Project mention: When to use Golang over Python for web app backend? | reddit.com/r/golang | 2021-01-24gorilla/schema - Parsing form data into structs
Index
What are some of the best open-source HTTP projects in Go? This list will help you:
Project | Stars | |
---|---|---|
1 | Caddy | 32,567 |
2 | Vegeta | 16,727 |
3 | mux | 13,874 |
4 | httprouter | 12,421 |
5 | kratos | 11,806 |
6 | wuzz | 9,510 |
7 | chi | 8,962 |
8 | inlets | 7,899 |
9 | chisel | 5,390 |
10 | RoadRunner | 4,888 |
11 | hetty | 3,132 |
12 | statik | 3,126 |
13 | bombardier | 2,511 |
14 | fortio | 1,783 |
15 | hoverfly | 1,702 |
16 | httpexpect | 1,631 |
17 | Armor | 1,621 |
18 | sish | 1,547 |
19 | faasd | 1,277 |
20 | gock | 1,167 |
21 | handlers | 1,163 |
22 | gentleman | 880 |
23 | schema | 871 |