scuffle-http
[!WARNING]
This crate is under active development and may not be stable.
An HTTP server with support for HTTP/1, HTTP/2 and HTTP/3.
It abstracts away hyper
and h3
to provide a rather simple interface for creating and running a server that can handle all three protocols.
See the examples directory for usage examples.
See the changelog for a full release history.
Feature flags
tracing
— Enables tracing supporthttp1
(enabled by default) — Enables http1 supporthttp2
(enabled by default) — Enabled http2 supporthttp3
— Enables http3 supporttls-rustls
— Enables tls via rustlshttp3-tls-rustls
— Alias for [“http3”, “tls-rustls”]tower
(enabled by default) — Enables tower service supportdocs
— Enables changelog and documentation of feature flags
Why do we need this?
This crate is designed to be a simple and easy to use HTTP server that supports HTTP/1, HTTP/2 and HTTP/3.
Currently, there are simply no other crates that provide support for all three protocols with a unified API. This crate aims to fill that gap.
Example
The following example demonstrates how to create a simple HTTP server (without TLS) that responds with “Hello, world!” to all requests on port 3000.
let service = fn_http_service;
let service_factory = service_clone_factory;
builder
.service_factory
.bind
.build
.run
.await
.expect;
Missing Features
- HTTP/3 webtransport support
- Upgrading to websocket connections from HTTP/3 connections (this is usually done via HTTP/1.1 anyway)
License
This project is licensed under the MIT or Apache-2.0 license. You can choose between one of them if you use this work.
SPDX-License-Identifier: MIT OR Apache-2.0