Skip to main content

better_fetch/
lib.rs

1//! # better-fetch
2//!
3//! Typed HTTP client layer on top of [reqwest](https://docs.rs/reqwest), inspired by
4//! [@better-fetch/fetch](https://better-fetch.vercel.app/docs). This crate is not affiliated
5//! with the upstream TypeScript project.
6
7mod url_build;
8
9pub mod auth;
10pub mod backend;
11pub mod cancel;
12pub mod client;
13pub mod endpoint;
14pub mod error;
15pub mod hooks;
16#[cfg(feature = "json")]
17mod json_parser;
18
19pub mod plugin;
20pub mod plugins;
21pub mod request;
22pub mod response;
23pub mod retry;
24#[cfg(feature = "validate")]
25mod validate_json;
26
27#[cfg(feature = "schema")]
28pub mod schema;
29
30#[cfg(feature = "openapi")]
31pub mod openapi;
32
33#[cfg(feature = "tower")]
34pub mod tower;
35
36pub use auth::{AsyncTokenProvider, Auth, TokenSource};
37pub use backend::{HttpBackend, HttpBody, HttpRequest, HttpResponse, ReqwestBackend};
38pub use cancel::CancellationToken;
39#[cfg(feature = "multipart")]
40pub use reqwest::multipart;
41pub use client::{Client, ClientBuilder, ClientConfig};
42pub use endpoint::{Endpoint, EndpointParams, EndpointQuery, EndpointRequestBuilder};
43pub use error::Error;
44pub use hooks::{ErrorContext, Hooks, RequestContext, ResponseContext, SuccessContext};
45#[cfg(feature = "json")]
46pub use json_parser::{json_parser, serde_json_parser, JsonParserFn};
47pub use plugin::{Plugin, PluginRegistry, PreparedRequest};
48pub use plugins::LoggerPlugin;
49pub use request::RequestBuilder;
50pub use response::Response;
51pub use retry::{default_should_retry, parse_retry_after, RetryPolicy, ShouldRetryFn};
52pub use url_build::QueryValue;
53
54#[cfg(feature = "schema")]
55pub use schema::{EndpointSchema, SchemaRegistry};
56
57#[cfg(feature = "openapi")]
58pub use openapi::{
59    OpenApiBuilder, OpenApiComponents, OpenApiDocument, OpenApiInfo, OpenApiOperation, OpenApiSchemaRef,
60    OpenApiServer,
61};
62
63#[cfg(feature = "tower")]
64pub use tower::{BoxHttpService, ReqwestHttpService, ServiceBackend};
65
66/// Result alias using [`Error`].
67pub type Result<T> = std::result::Result<T, Error>;