anyhttp

A low-level C++23 HTTP client and server library: HTTP/1.1, HTTP/2 and HTTP/3 behind one type-erasing interface, hence the any in the name, and plain QUIC streams next to HTTP/3 for protocols of your own. It runs on either Asio or Corosio, chosen when a build is configured.

Warning

THIS REPOSITORY IS PURELY EXPERIMENTAL. It is not meant for production use, and anything in it can change or break at any time, without notice.

None of the protocols is implemented from scratch. The library is a wrapper around Beast (its parser and serializer), nghttp2 or nghttp2 version 2, and ngtcp2 with nghttp3.

Programmer’s guide is the place to start. It goes through what a program does with the library, in the order it does it, and links to API reference for everything it mentions.

The source is on GitHub, and so is its CI, which also makes the coverage report.