Expand description
A compatibility library for running Warp filters within Axum servers.
This crate enables gradual migration from Warp to Axum by allowing existing Warp routes to run alongside new Axum routes in the same server.
§Example
use axum::{routing::get, Router};
use warpdrive::WarpService;
use warp::Filter;
// Existing Warp routes
let warp_routes = warp::path("api")
.and(warp::get())
.map(|| "Hello from Warp!")
.boxed();
// Combine with Axum routes
let app: Router = Router::new()
.route("/", get(|| async { "Hello from Axum!" }))
.fallback_service(WarpService::new(warp_routes));§Limitations
- WebSockets are not supported, these should be migrated to Axum first.
- Some other advanced Warp features may not work.
- Some conversion overhead from converting
http::Requestandhttp::Responsetypes.
§Error Handling
WarpService acts as a transparent wrapper. The existing Warp rejection handling should work
exactly as before. It merely converts the pre-v1.0 http::Response into the Axum 0.8-compatible
v1.0 http::Response type.
The service only adds 500 errors in the extremely rare case of HTTP format conversion failures.
Structs§
- Warp
Service - A Tower service that wraps Warp filters to run within Axum servers.