Go HTTP

Open-source Go projects categorized as HTTP

Top 23 Go HTTP Projects

  • GitHub repo 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-06

    Recommendation first, I’d say try out caddy server. Seriously the simplest httpd server with built in tls. https://caddyserver.com

  • GitHub repo Vegeta

    HTTP load testing tool and library. It's over 9000!

    Project mention: Containers benchmarks | reddit.com/r/kubernetes | 2021-02-14

    As with most things in life, DragonBallZ is the answer: https://github.com/tsenart/vegeta

  • GitHub repo mux

    A powerful HTTP router and URL matcher for building Go web servers with 🦍

    Project mention: Basic question: How to install a package? | reddit.com/r/golang | 2021-02-26

    After installing Go and setting up my GOPATH, I'd like to install the gorilla/mux package. So I do

  • GitHub repo httprouter

    A high performance HTTP request router that scales well

    Project mention: Choosing building blocks to move faster | dev.to | 2021-02-01

    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.

  • GitHub repo kratos

    A Go framework for microservices.

    Project mention: Don't Panic: Catching Panics in Errgroup | dev.to | 2021-01-16

    Kratos errgroup

  • GitHub repo wuzz

    Interactive cli tool for HTTP inspection

  • GitHub repo chi

    lightweight, idiomatic and composable router for building Go HTTP services

    Project mention: Release v5.0.0 · go-chi/chi | reddit.com/r/golang | 2021-02-27

    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

  • GitHub repo inlets

    Cloud Native Tunnel for APIs

    Project mention: Show HN: Inlets 3.0 RC1 | news.ycombinator.com | 2021-02-05
  • GitHub repo 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-25

    Use chisel in combination with frp. This is a lot more complicated, but the end result is really the same as localtunnel's.

  • GitHub repo RoadRunner

    High-performance PHP application server, load-balancer and process manager written in Golang

  • GitHub repo hetty

    Hetty is an HTTP toolkit for security research.

    Project mention: Gopher Gold #14 - Wed Oct 07 2020 | dev.to | 2020-10-07

    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.

  • GitHub repo statik

    Embed files into a Go executable

    Project mention: REST Servers in Go: Part 1 – standard library | news.ycombinator.com | 2021-01-16

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

  • GitHub repo bombardier

    Fast cross-platform HTTP benchmarking tool written in Go

    Project mention: What's the fastest template parser in Go? | dev.to | 2020-10-01

    Bombardier

  • GitHub repo 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.

  • GitHub repo hoverfly

    Lightweight service virtualization/API simulation tool for developers and testers

  • GitHub repo 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-29

    https://github.com/gavv/httpexpect End-to-end HTTP and REST API testing for Go.

  • GitHub repo Armor

    Uncomplicated, modern HTTP server

  • GitHub repo sish

    HTTP(S)/WS(S)/TCP Tunnels to localhost using only SSH.

  • GitHub repo faasd

    A lightweight & portable faas engine

    Project mention: Thoughts on Apache OpenWhisk | reddit.com/r/selfhosted | 2021-03-06
  • GitHub repo gock

    HTTP traffic mocking and testing made easy in Go ༼ʘ̚ل͜ʘ̚༽

    Project mention: How to mock `jwk.Fetch` in my unit tests? | reddit.com/r/golang | 2021-03-02
  • GitHub repo handlers

    A collection of useful middleware for Go HTTP services & web applications 🛃

    Project mention: Go is not an easy language | news.ycombinator.com | 2021-02-21

    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.

  • GitHub repo gentleman

    Full-featured, plugin-driven, extensible HTTP client toolkit for Go

  • GitHub repo 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-24

    gorilla/schema - Parsing form data into structs

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-03-06.

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