Skip to main content

Crate rust_web_server

Crate rust_web_server 

Source
Expand description

§rust-web-server

A static file web server and HTTP toolkit written in Rust. Supports HTTP/3 (QUIC), HTTP/2, and HTTP/1.1.

§Use as a library

Add to Cargo.toml:

[dependencies]
rust-web-server = "17"

§Quick start: add a custom route

use rust_web_server::controller::Controller;
use rust_web_server::request::{METHOD, Request};
use rust_web_server::response::{Response, STATUS_CODE_REASON_PHRASE};
use rust_web_server::range::Range;
use rust_web_server::mime_type::MimeType;
use rust_web_server::server::ConnectionInfo;

pub struct PingController;

impl Controller for PingController {
    fn is_matching(request: &Request, _: &ConnectionInfo) -> bool {
        request.method == METHOD.get && request.request_uri == "/ping"
    }

    fn process(_: &Request, mut response: Response, _: &ConnectionInfo) -> Response {
        response.status_code = *STATUS_CODE_REASON_PHRASE.n200_ok.status_code;
        response.reason_phrase = STATUS_CODE_REASON_PHRASE.n200_ok.reason_phrase.to_string();
        response.content_range_list = vec![
            Range::get_content_range(b"pong".to_vec(), MimeType::TEXT_PLAIN.to_string())
        ];
        response
    }
}

See DEVELOPER.md for the full building blocks reference and use case examples.

Modules§

app
application
async_state
Async-capable state-aware application — requires the http2 feature (tokio).
body
client_hint
compression
controller
cookie
core
cors
entry_point
error
ext
extract
header
http
ip_filter
IP address allowlist and denylist middleware.
json
language
log
macros
Declarative routing macro.
metrics
middleware
Composable middleware pipeline.
mime_type
null
range
rate_limit
request
response
router
server
session
Server-side session management.
sse
Server-Sent Events (SSE) response builder.
state
Shared application state and state-aware routing.
symbol
test_client
thread_pool
url
websocket
WebSocket protocol support — RFC 6455.

Macros§

routes
Build a routing app from a declarative table.