Expand description
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 = scuffle_http::service::fn_http_service(|req| async move {
scuffle_http::Response::builder()
.status(scuffle_http::http::StatusCode::OK)
.header(scuffle_http::http::header::CONTENT_TYPE, "text/plain")
.body("Hello, world!".to_string())
});
let service_factory = scuffle_http::service::service_clone_factory(service);
scuffle_http::HttpServer::builder()
.service_factory(service_factory)
.bind("[::]:3000".parse().unwrap())
.build()
.run()
.await
.expect("server failed");§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
Modules§
- backend
http1orhttp2orhttp3 - This module contains the underlying backends for the server.
- body
- Types for working with HTTP bodies.
- error
- Error types.
- extensions
- HTTP extensions that this crate provides.
- service
- HTTP service and service factory traits.
- changelog
- Changelogs generated by scuffle_changelog
Structs§
- Http
Server - The HTTP server.
- Http
Server Builder - Use builder syntax to set the inputs and finish with
build().
Type Aliases§
- Incoming
Request - An incoming request.
Re-exports§
pub use http;
Structs§
- Response
- Represents an HTTP response