53 releases

0.23.0 Oct 15, 2024
0.21.0 Aug 4, 2024
0.20.2 Jan 26, 2024
0.20.1 Nov 18, 2023
0.15.0 Mar 7, 2022

#27 in HTTP server

Download history 22264/week @ 2024-08-21 20654/week @ 2024-08-28 26952/week @ 2024-09-04 23542/week @ 2024-09-11 20395/week @ 2024-09-18 21512/week @ 2024-09-25 20750/week @ 2024-10-02 20703/week @ 2024-10-09 21953/week @ 2024-10-16 20654/week @ 2024-10-23 19168/week @ 2024-10-30 18340/week @ 2024-11-06 22406/week @ 2024-11-13 22567/week @ 2024-11-20 18268/week @ 2024-11-27 15492/week @ 2024-12-04

82,400 downloads per month
Used in 20 crates

MIT/Apache

300KB
6.5K SLoC

actix-web-lab

Experimental extractors, middleware, and other extras for possible inclusion in Actix Web.

crates.io Documentation MIT or Apache 2.0 licensed
dependency status Download codecov

Features

Feature Voting →

Responders

  • Csv: efficient CSV streaming (docs)
  • NdJson: efficient NDJSON streaming (docs)
  • DisplayStream: efficient line-by-line Display streaming (docs)
  • Html: (graduated 🎉) basic string wrapper that responds with HTML Content-Type (docs)
  • Cbor: basic CBOR format wrapper with appropriate Content-Type (docs)
  • MessagePack: basic MessagePack format wrapper with appropriate Content-Type (docs)
  • Sse: semantic server-sent events (SSE) responder with a channel-like interface (docs)

Middleware

  • from_fn: (graduated 🎉) use an async function as a middleware (docs)
  • map_response: use an async function to modify the response (docs)
  • map_response_body: use an async function to modify the response body (docs)
  • RedirectHttps: middleware to redirect traffic to HTTPS if connection is insecure with optional HSTS (docs)
  • redirect_to_www: function middleware to redirect traffic to www. if not already there (docs)
  • redirect_to_non_www: function middleware to redirect traffic to www. if not already there (docs)
  • ErrorHandlers: alternative error handler middleware with simpler interface (docs)
  • NormalizePath: alternative path normalizing middleware with redirect option (docs)
  • CatchPanic: catch panics in wrapped handlers and middleware, returning empty 500 responses (docs)
  • PanicReporter: catch panics in wrapped handlers and middleware, returning empty 500 responses (docs)
  • LoadShed: sheds load when the inner service isn't ready (docs)

Extractors

  • LazyData: app data/state initialized on first use (docs)
  • SwapData: app data/state that can be replaced at runtime (alternative to Data<RwLock<T>>) (docs)
  • LocalData: app data/state that uses an Rc internally, avoiding atomic overhead (alternative to Data<RwLock<T>>) (docs)
  • ThinData: (graduated 🎉) app data/state for cheaply-cloned types (docs)
  • Json: simplified JSON extractor with const-generic payload limits (docs)
  • Path: simplified path parameter extractor that supports destructuring (docs)
  • Query: simplified query-string extractor that can also collect multi-value items (docs)
  • RequestSignature: wraps an extractor and calculates a request signature alongside (docs)
  • BodyLimit: wraps a body extractor and prevents DoS attacks by limiting payload size (docs)
  • Bytes: simplified Bytes extractor with const-generic limits (docs)
  • UrlEncodedForm: URL-encoded form extractor with const-generic payload size limit (docs)
  • Host: Host information taken from either URL or Host header (docs)

Macros

  • FromRequest: Derive macro to implement FromRequest on an aggregate struct of other extractors (docs)

Headers

  • CacheControl: Cache-Control typed header with support for modern directives (docs)
  • ClearSiteData: Clear-Site-Data typed header (docs)
  • ContentLength: Content-Length typed header (docs)
  • Forwarded: Proxy and original client info (docs)
  • StrictTransportSecurity: Strict-Transport-Security (HSTS) configuration (docs)

Body Types

  • channel: a simple channel-like body type with a sender side that can be used from another thread (docs)
  • writer: a simple AsyncWrite body type (docs)

Services

  • Redirect: (graduated 🎉) simple redirects (docs)
  • spa: Easy Single-page Application (SPA) service (docs)

Route Guards

  • Acceptable: (graduated 🎉) verifies that an Accept header is present and it contains a compatible MIME type (docs)

Test Utilities

  • test_request: construct TestRequest using an HTTP-like DSL (docs)
  • assert_response_matches: quickly write tests that check various parts of a ServiceResponse (docs)

Other Utilities

  • fork_request_payload: effectively clone a request payload (docs)

Things To Know About This Crate

  • It will never reach v1.0.
  • Minimum Supported Rust Version (MSRV) is latest stable at the time of each release.
  • Breaking changes will likely happen on most 0.x version bumps.
  • Documentation might be limited for some items.
  • Items that graduate to Actix Web crate will be marked deprecated here for a reasonable amount of time so you can migrate.
  • Migrating will often be as easy as dropping the _lab suffix from imports.

Dependencies

~20–32MB
~540K SLoC