pub use actix_web::{
self, web, App, HttpRequest, HttpResponse, HttpServer, Responder, Result as ActixResult,
};
#[cfg(feature = "extract")]
pub use crate::extract::{
AutoData, AutoForm, AutoJson, AutoPath, AutoQuery, AutoState, ValidatedForm, ValidatedJson,
ValidatedQuery,
};
#[cfg(feature = "middleware")]
pub use crate::middleware::{
auth::{AuthExtractor, AuthMiddleware, Authentication, Authorization},
cache::Cache,
compression::Compression,
metrics::{Metrics, MetricsData, MetricsStore},
rate_limit::{RateLimit, RateLimitConfig},
request_id::RequestId,
timeout::Timeout,
tracing::{TracingConfig, TracingMiddleware},
};
#[cfg(feature = "tower")]
pub use crate::{
compat::tower::{apply_tower, TowerLayer, TowerLayerCompat},
tower_layer,
};
#[cfg(feature = "utils")]
pub use crate::utils::{
builder::{AppBuilder, ServiceConfigBuilder},
error::{ApiError, ApiErrorResponse, ErrorCode},
response::{ApiResponse, TypedResponse},
validation::{in_range, is_email, not_empty, Validator},
RequestExt,
};
#[cfg(feature = "macros")]
pub use crate::macros::{extract, handler, route};
pub use bytes::Bytes;
pub use serde::{Deserialize, Serialize};
pub use serde_json::Value as JsonValue;