justapi — /docs

What HTTP/3 gives you

HTTP/3 runs over UDP via QUIC (RFC 9000) with TLS 1.3 built in. Unlike HTTP/1.1 and HTTP/2 (both TCP), QUIC multiplexes many requests on a single connection with no head-of-line blocking, supports 0-RTT resumption, and handles connection migration natively. JustAPI is the only Python web framework with an HTTP/3 server.

Enabling HTTP/3

from justapi import JustAPIApp

app = JustAPIApp()
app.enable_http3(
    cert_path="certs/fullchain.pem",
    key_path="certs/privkey.pem",
)

app.get("/", lambda r: {"message": "hello"})
app.run("0.0.0.0:443")

That's it — run(addr) binds the same address over UDP and serves the same application handler over HTTP/3 and HTTP/1.1/2 over TCP. Routes, dependencies, schema validation, sessions, and the GIL-pool dispatch all work identically over QUIC (verified end-to-end in the test suite).

Requirements:

  • PEM certificate and private key files (QUIC mandates TLS 1.3 — a self-signed cert works for testing, use a real CA for production).
  • A build with the http3 feature enabled. The default wheel does not include it; rebuild with: bash maturin develop --features http3 # dev maturin build --release --features http3 # wheel

Without the feature, app.enable_http3(...) raises NotImplementedError.

Testing with a QUIC client

# curl with HTTP/3 support (curl >= 7.66 built with --http3)
curl --http3 https://127.0.0.1:443/

# Python (h3 / aioquic)
pip install aioquic

Notes

  • HTTP/3 and the TCP listeners share the same port (UDP vs TCP — no conflict).
  • Graceful shutdown (SIGTERM/Ctrl+C) stops the QUIC listener too.
  • Metrics record HTTP/3 requests through the same pipeline as TCP.

JustAPI v2.0.9 — Open Source MIT License · Built with WebTUI · GitHub

NORMAL master justapi/docs
utf-8 Top 1:1