pub struct HttpClient { /* private fields */ }
Expand description
HTTP 客户端
用于发送 HTTP 请求的入口。
其中 HTTP 请求将由 HttpCaller
实现的实例来发送,如果不指定,默认通过当前启用的功能来判定。
§私有云获取当前账户的 Buckets 列表
§阻塞代码示例
use qiniu_credential::Credential;
use qiniu_http_client::{Authorization, HttpClient, Region, RegionsProviderEndpoints, ServiceName};
let region = Region::builder("z0")
.add_uc_preferred_endpoint("uc-qos.pocdemo.qiniu.io".parse()?)
.build();
let credential = Credential::new("abcdefghklmnopq", "1234567890");
let bucket_names: Vec<String> = HttpClient::default()
.get(&[ServiceName::Uc], RegionsProviderEndpoints::new(region))
.use_https(false)
.authorization(Authorization::v2(credential))
.accept_json()
.path("/buckets")
.call()?
.parse_json()?
.into_body();
§异步代码示例
use qiniu_credential::Credential;
use qiniu_http_client::{Authorization, HttpClient, Region, RegionsProviderEndpoints, ServiceName};
let region = Region::builder("z0")
.add_uc_preferred_endpoint("uc-qos.pocdemo.qiniu.io".parse()?)
.build();
let credential = Credential::new("abcdefghklmnopq", "1234567890");
let bucket_names: Vec<String> = HttpClient::default()
.async_get(&[ServiceName::Uc], RegionsProviderEndpoints::new(region))
.use_https(false)
.authorization(Authorization::v2(credential))
.accept_json()
.path("/buckets")
.call()
.await?
.parse_json()
.await?
.into_body();
Implementations§
Source§impl HttpClient
impl HttpClient
Sourcepub fn ureq() -> Self
Available on crate feature ureq
only.
pub fn ureq() -> Self
ureq
only.创建一个新的 HTTP 客户端,使用 crate::ureq::Client
作为 HttpCaller
实现
Sourcepub fn isahc() -> Result<Self, IsahcError>
Available on crate feature isahc
only.
pub fn isahc() -> Result<Self, IsahcError>
isahc
only.创建一个新的 HTTP 客户端,使用 crate::isahc::Client
作为 HttpCaller
实现
Sourcepub fn reqwest_sync() -> Self
Available on crate feature reqwest
only.
pub fn reqwest_sync() -> Self
reqwest
only.创建一个新的 HTTP 客户端,使用 crate::reqwest::SyncClient
作为 HttpCaller
实现
Sourcepub fn reqwest_async() -> Self
Available on crate features reqwest
and async
only.
pub fn reqwest_async() -> Self
reqwest
and async
only.创建一个新的 HTTP 客户端,使用 crate::reqwest::AsyncClient
作为 HttpCaller
实现
Sourcepub fn build_default() -> HttpClientBuilder
pub fn build_default() -> HttpClientBuilder
创建一个新的 HTTP 客户端,根据当前环境变量选择 HttpCaller
实现
Sourcepub fn build_ureq() -> HttpClientBuilder
Available on crate feature ureq
only.
pub fn build_ureq() -> HttpClientBuilder
ureq
only.创建一个新的 HTTP 客户端构建器,使用 crate::ureq::Client
作为 HttpCaller
实现
Sourcepub fn build_isahc() -> Result<HttpClientBuilder, IsahcError>
Available on crate feature isahc
only.
pub fn build_isahc() -> Result<HttpClientBuilder, IsahcError>
isahc
only.创建一个新的 HTTP 客户端构建器,使用 crate::isahc::Client
作为 HttpCaller
实现
Sourcepub fn build_reqwest_sync() -> HttpClientBuilder
Available on crate feature reqwest
only.
pub fn build_reqwest_sync() -> HttpClientBuilder
reqwest
only.创建一个新的 HTTP 客户端构建器,使用 crate::reqwest::SyncClient
作为 HttpCaller
实现
Sourcepub fn build_reqwest_async() -> HttpClientBuilder
Available on crate features reqwest
and async
only.
pub fn build_reqwest_async() -> HttpClientBuilder
reqwest
and async
only.创建一个新的 HTTP 客户端构建器,使用 crate::reqwest::AsyncClient
作为 HttpCaller
实现
Sourcepub fn new(http_caller: impl HttpCaller + 'static) -> Self
pub fn new(http_caller: impl HttpCaller + 'static) -> Self
创建一个新的 HTTP 客户端,需要指定 HttpCaller
实现
Sourcepub fn builder(http_caller: impl HttpCaller + 'static) -> HttpClientBuilder
pub fn builder(http_caller: impl HttpCaller + 'static) -> HttpClientBuilder
创建一个新的 HTTP 客户端构建器,需要指定 HttpCaller
实现
Sourcepub fn get<'r, E: EndpointsProvider + 'r>(
&'r self,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> SyncRequestBuilder<'r, E>
pub fn get<'r, E: EndpointsProvider + 'r>( &'r self, service_names: &'r [ServiceName], endpoints_provider: E, ) -> SyncRequestBuilder<'r, E>
创建 GET 请求的请求构建器
该方法的异步版本为 HttpClient::async_get
。
Sourcepub fn post<'r, E: EndpointsProvider + 'r>(
&'r self,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> SyncRequestBuilder<'r, E>
pub fn post<'r, E: EndpointsProvider + 'r>( &'r self, service_names: &'r [ServiceName], endpoints_provider: E, ) -> SyncRequestBuilder<'r, E>
创建 POST 请求的请求构建器
该方法的异步版本为 HttpClient::async_post
。
Sourcepub fn put<'r, E: EndpointsProvider + 'r>(
&'r self,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> SyncRequestBuilder<'r, E>
pub fn put<'r, E: EndpointsProvider + 'r>( &'r self, service_names: &'r [ServiceName], endpoints_provider: E, ) -> SyncRequestBuilder<'r, E>
创建 PUT 请求的请求构建器
该方法的异步版本为 HttpClient::async_put
。
Sourcepub fn delete<'r, E: EndpointsProvider + 'r>(
&'r self,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> SyncRequestBuilder<'r, E>
pub fn delete<'r, E: EndpointsProvider + 'r>( &'r self, service_names: &'r [ServiceName], endpoints_provider: E, ) -> SyncRequestBuilder<'r, E>
创建 DELETE 请求的请求构建器
该方法的异步版本为 HttpClient::async_delete
。
Sourcepub fn new_request<'r, E: EndpointsProvider + 'r>(
&'r self,
method: Method,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> SyncRequestBuilder<'r, E>
pub fn new_request<'r, E: EndpointsProvider + 'r>( &'r self, method: Method, service_names: &'r [ServiceName], endpoints_provider: E, ) -> SyncRequestBuilder<'r, E>
创建请求的请求构建器
该方法的异步版本为 HttpClient::new_async_request
。
Sourcepub fn async_get<'r, E: EndpointsProvider + 'r>(
&'r self,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> AsyncRequestBuilder<'r, E>
Available on crate feature async
only.
pub fn async_get<'r, E: EndpointsProvider + 'r>( &'r self, service_names: &'r [ServiceName], endpoints_provider: E, ) -> AsyncRequestBuilder<'r, E>
async
only.创建 GET 请求的异步请求构建器
Sourcepub fn async_post<'r, E: EndpointsProvider + 'r>(
&'r self,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> AsyncRequestBuilder<'r, E>
Available on crate feature async
only.
pub fn async_post<'r, E: EndpointsProvider + 'r>( &'r self, service_names: &'r [ServiceName], endpoints_provider: E, ) -> AsyncRequestBuilder<'r, E>
async
only.创建 POST 请求的异步请求构建器
Sourcepub fn async_put<'r, E: EndpointsProvider + 'r>(
&'r self,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> AsyncRequestBuilder<'r, E>
Available on crate feature async
only.
pub fn async_put<'r, E: EndpointsProvider + 'r>( &'r self, service_names: &'r [ServiceName], endpoints_provider: E, ) -> AsyncRequestBuilder<'r, E>
async
only.创建 PUT 请求的异步请求构建器
Sourcepub fn async_delete<'r, E: EndpointsProvider + 'r>(
&'r self,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> AsyncRequestBuilder<'r, E>
Available on crate feature async
only.
pub fn async_delete<'r, E: EndpointsProvider + 'r>( &'r self, service_names: &'r [ServiceName], endpoints_provider: E, ) -> AsyncRequestBuilder<'r, E>
async
only.创建 DELETE 请求的异步请求构建器
Sourcepub fn new_async_request<'r, E: EndpointsProvider + 'r>(
&'r self,
method: Method,
service_names: &'r [ServiceName],
endpoints_provider: E,
) -> AsyncRequestBuilder<'r, E>
pub fn new_async_request<'r, E: EndpointsProvider + 'r>( &'r self, method: Method, service_names: &'r [ServiceName], endpoints_provider: E, ) -> AsyncRequestBuilder<'r, E>
创建异步请求的请求构建器
Source§impl HttpClient
impl HttpClient
Sourcepub fn default_http_caller() -> Box<dyn HttpCaller>
pub fn default_http_caller() -> Box<dyn HttpCaller>
获得默认的 HttpCaller
实例
默认通过当前启用的功能来判定
Sourcepub fn default_resolver() -> Box<dyn Resolver>
pub fn default_resolver() -> Box<dyn Resolver>
获得默认的 Resolver
实例
默认通过当前启用的功能来判定,并使用 CachedResolver
和 ShuffledResolver
对其进行包装。
Sourcepub fn default_chooser() -> Box<dyn Chooser>
pub fn default_chooser() -> Box<dyn Chooser>
获得默认的 Chooser
实例
默认使用 SubnetChooser
,并使用 ShuffledChooser
和 NeverEmptyHandedChooser
对其进行包装。
Sourcepub fn default_retrier() -> Box<dyn RequestRetrier>
pub fn default_retrier() -> Box<dyn RequestRetrier>
获得默认的 RequestRetrier
实例
默认使用 ErrorRetrier
,并使用 LimitedRetrier
对其进行包装。
Sourcepub fn default_backoff() -> Box<dyn Backoff>
pub fn default_backoff() -> Box<dyn Backoff>
获得默认的 Backoff
实例
默认使用 ExponentialBackoff
,并使用 LimitedBackoff
和 RandomizedBackoff
对其进行包装。
Trait Implementations§
Source§impl Clone for HttpClient
impl Clone for HttpClient
Source§fn clone(&self) -> HttpClient
fn clone(&self) -> HttpClient
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for HttpClient
impl Debug for HttpClient
Auto Trait Implementations§
impl Freeze for HttpClient
impl !RefUnwindSafe for HttpClient
impl Send for HttpClient
impl Sync for HttpClient
impl Unpin for HttpClient
impl !UnwindSafe for HttpClient
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.