Struct qiniu_http_client::RequestBuilder
source · pub struct RequestBuilder<'r, B: 'r, E: 'r> { /* private fields */ }
Expand description
请求构建器
通过 HttpClient::get
, HttpClient::post
等方法创建请求构建器
Implementations§
source§impl<'r, B: 'r, E: 'r> RequestBuilder<'r, B, E>
impl<'r, B: 'r, E: 'r> RequestBuilder<'r, B, E>
sourcepub fn path(&mut self, path: impl Into<Cow<'r, str>>) -> &mut Self
pub fn path(&mut self, path: impl Into<Cow<'r, str>>) -> &mut Self
设置 HTTP 请求路径
Examples found in repository?
src/regions/regions_provider/all_regions_provider.rs (line 261)
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
fn do_sync_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.http_client
.get(&[ServiceName::Uc], &self.uc_endpoints)
.path("/regions")
.authorization(Authorization::v2(&self.credential_provider))
.accept_json()
.call()?
.parse_json::<ResponseBody>()?,
)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.http_client
.async_get(&[ServiceName::Uc], &self.uc_endpoints)
.path("/regions")
.authorization(Authorization::v2(&self.credential_provider))
.accept_json()
.call()
.await?
.parse_json::<ResponseBody>()
.await?,
)
}
More examples
src/regions/regions_provider/bucket_regions_queryer.rs (line 291)
286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315
fn do_sync_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.queryer
.http_client
.get(&[ServiceName::Uc, ServiceName::Api], &self.queryer.uc_endpoints)
.path("/v4/query")
.append_query_pair("ak", self.access_key.as_str())
.append_query_pair("bucket", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<ResponseBody>()?,
)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.queryer
.http_client
.async_get(&[ServiceName::Uc, ServiceName::Api], &self.queryer.uc_endpoints)
.path("/v4/query")
.append_query_pair("ak", self.access_key.as_str())
.append_query_pair("bucket", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<ResponseBody>()
.await?,
)
}
src/regions/endpoints_provider/bucket_domains_provider.rs (line 277)
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
fn do_sync_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<Vec<String>>()?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.async_get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<Vec<String>>()
.await?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
sourcepub fn set_header(
&mut self,
header_name: impl IntoHeaderName,
header_value: impl Into<HeaderValue>
) -> &mut Self
pub fn set_header(
&mut self,
header_name: impl IntoHeaderName,
header_value: impl Into<HeaderValue>
) -> &mut Self
添加 HTTP 请求头
sourcepub fn accept_json(&mut self) -> &mut Self
pub fn accept_json(&mut self) -> &mut Self
设置 HTTP 响应预期为 JSON 类型
Examples found in repository?
src/regions/regions_provider/all_regions_provider.rs (line 263)
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
fn do_sync_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.http_client
.get(&[ServiceName::Uc], &self.uc_endpoints)
.path("/regions")
.authorization(Authorization::v2(&self.credential_provider))
.accept_json()
.call()?
.parse_json::<ResponseBody>()?,
)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.http_client
.async_get(&[ServiceName::Uc], &self.uc_endpoints)
.path("/regions")
.authorization(Authorization::v2(&self.credential_provider))
.accept_json()
.call()
.await?
.parse_json::<ResponseBody>()
.await?,
)
}
More examples
src/regions/regions_provider/bucket_regions_queryer.rs (line 294)
286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315
fn do_sync_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.queryer
.http_client
.get(&[ServiceName::Uc, ServiceName::Api], &self.queryer.uc_endpoints)
.path("/v4/query")
.append_query_pair("ak", self.access_key.as_str())
.append_query_pair("bucket", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<ResponseBody>()?,
)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.queryer
.http_client
.async_get(&[ServiceName::Uc, ServiceName::Api], &self.queryer.uc_endpoints)
.path("/v4/query")
.append_query_pair("ak", self.access_key.as_str())
.append_query_pair("bucket", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<ResponseBody>()
.await?,
)
}
src/regions/endpoints_provider/bucket_domains_provider.rs (line 280)
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
fn do_sync_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<Vec<String>>()?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.async_get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<Vec<String>>()
.await?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
sourcepub fn accept_application_octet_stream(&mut self) -> &mut Self
pub fn accept_application_octet_stream(&mut self) -> &mut Self
设置 HTTP 响应预期为二进制流类型
sourcepub fn append_query_pair(
&mut self,
query_pair_key: impl Into<QueryPairKey<'r>>,
query_pair_value: impl Into<QueryPairValue<'r>>
) -> &mut Self
pub fn append_query_pair(
&mut self,
query_pair_key: impl Into<QueryPairKey<'r>>,
query_pair_value: impl Into<QueryPairValue<'r>>
) -> &mut Self
追加查询参数
Examples found in repository?
src/regions/regions_provider/bucket_regions_queryer.rs (line 292)
286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315
fn do_sync_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.queryer
.http_client
.get(&[ServiceName::Uc, ServiceName::Api], &self.queryer.uc_endpoints)
.path("/v4/query")
.append_query_pair("ak", self.access_key.as_str())
.append_query_pair("bucket", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<ResponseBody>()?,
)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.queryer
.http_client
.async_get(&[ServiceName::Uc, ServiceName::Api], &self.queryer.uc_endpoints)
.path("/v4/query")
.append_query_pair("ak", self.access_key.as_str())
.append_query_pair("bucket", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<ResponseBody>()
.await?,
)
}
More examples
src/regions/endpoints_provider/bucket_domains_provider.rs (line 279)
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
fn do_sync_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<Vec<String>>()?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.async_get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<Vec<String>>()
.await?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
sourcepub fn appended_user_agent(
&mut self,
user_agent: impl Into<UserAgent>
) -> &mut Self
pub fn appended_user_agent(
&mut self,
user_agent: impl Into<UserAgent>
) -> &mut Self
追加 UserAgent
设置鉴权签名
Examples found in repository?
src/regions/regions_provider/all_regions_provider.rs (line 262)
257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282
fn do_sync_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.http_client
.get(&[ServiceName::Uc], &self.uc_endpoints)
.path("/regions")
.authorization(Authorization::v2(&self.credential_provider))
.accept_json()
.call()?
.parse_json::<ResponseBody>()?,
)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.http_client
.async_get(&[ServiceName::Uc], &self.uc_endpoints)
.path("/regions")
.authorization(Authorization::v2(&self.credential_provider))
.accept_json()
.call()
.await?
.parse_json::<ResponseBody>()
.await?,
)
}
More examples
src/regions/endpoints_provider/bucket_domains_provider.rs (line 278)
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
fn do_sync_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<Vec<String>>()?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
#[cfg(feature = "async")]
async fn do_async_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.async_get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<Vec<String>>()
.await?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
sourcepub fn idempotent(&mut self, idempotent: Idempotent) -> &mut Self
pub fn idempotent(&mut self, idempotent: Idempotent) -> &mut Self
设置为幂等请求
sourcepub fn extensions(&mut self, extensions: Extensions) -> &mut Self
pub fn extensions(&mut self, extensions: Extensions) -> &mut Self
设置扩展信息
sourcepub fn add_extension<T: Send + Sync + 'static>(&mut self, val: T) -> &mut Self
pub fn add_extension<T: Send + Sync + 'static>(&mut self, val: T) -> &mut Self
添加扩展信息
sourcepub fn on_uploading_progress(
&mut self,
callback: impl Fn(&dyn SimplifiedCallbackContext, TransferProgressInfo<'_>) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_uploading_progress(
&mut self,
callback: impl Fn(&dyn SimplifiedCallbackContext, TransferProgressInfo<'_>) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置上传进度回调函数
sourcepub fn on_receive_response_status(
&mut self,
callback: impl Fn(&dyn SimplifiedCallbackContext, StatusCode) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_receive_response_status(
&mut self,
callback: impl Fn(&dyn SimplifiedCallbackContext, StatusCode) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置响应状态码回调函数
sourcepub fn on_receive_response_header(
&mut self,
callback: impl Fn(&dyn SimplifiedCallbackContext, &HeaderName, &HeaderValue) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_receive_response_header(
&mut self,
callback: impl Fn(&dyn SimplifiedCallbackContext, &HeaderName, &HeaderValue) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置响应 HTTP 头回调函数
sourcepub fn on_to_resolve_domain(
&mut self,
callback: impl Fn(&mut dyn CallbackContext, &str) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_to_resolve_domain(
&mut self,
callback: impl Fn(&mut dyn CallbackContext, &str) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置域名解析前回调函数
sourcepub fn on_domain_resolved(
&mut self,
callback: impl Fn(&mut dyn CallbackContext, &str, &ResolveAnswers) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_domain_resolved(
&mut self,
callback: impl Fn(&mut dyn CallbackContext, &str, &ResolveAnswers) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置域名解析成功回调函数
sourcepub fn on_to_choose_ips(
&mut self,
callback: impl Fn(&mut dyn CallbackContext, &[IpAddrWithPort]) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_to_choose_ips(
&mut self,
callback: impl Fn(&mut dyn CallbackContext, &[IpAddrWithPort]) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置 IP 地址选择前回调函数
sourcepub fn on_ips_chosen(
&mut self,
callback: impl Fn(&mut dyn CallbackContext, &[IpAddrWithPort], &[IpAddrWithPort]) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_ips_chosen(
&mut self,
callback: impl Fn(&mut dyn CallbackContext, &[IpAddrWithPort], &[IpAddrWithPort]) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置 IP 地址选择成功回调函数
sourcepub fn on_before_request_signed(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_before_request_signed(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置 HTTP 请求签名前回调函数
sourcepub fn on_after_request_signed(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_after_request_signed(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置 HTTP 请求前回调函数
sourcepub fn on_response(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext, &ResponseParts) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_response(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext, &ResponseParts) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置响应成功回调函数
sourcepub fn on_error(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext, &mut ResponseError) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_error(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext, &mut ResponseError) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置响应错误回调函数
sourcepub fn on_before_backoff(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext, Duration) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_before_backoff(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext, Duration) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置退避前回调函数
sourcepub fn on_after_backoff(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext, Duration) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
pub fn on_after_backoff(
&mut self,
callback: impl Fn(&mut dyn ExtendedCallbackContext, Duration) -> AnyResult<()> + Send + Sync + 'r
) -> &mut Self
设置退避后回调函数
sourcepub fn parts(&self) -> &RequestBuilderParts<'r>
pub fn parts(&self) -> &RequestBuilderParts<'r>
获取 HTTP 请求构建器部分参数
sourcepub fn parts_mut(&mut self) -> &mut RequestBuilderParts<'r>
pub fn parts_mut(&mut self) -> &mut RequestBuilderParts<'r>
获取 HTTP 请求构建器部分参数的可变引用
sourcepub fn into_parts(self) -> RequestBuilderParts<'r>
pub fn into_parts(self) -> RequestBuilderParts<'r>
转换为 HTTP 请求构建器部分参数
source§impl<'r, E: 'r> RequestBuilder<'r, RequestBody<'r>, E>
impl<'r, E: 'r> RequestBuilder<'r, RequestBody<'r>, E>
sourcepub fn stream_as_body(
&mut self,
body: impl Read + Reset + Debug + Send + Sync + 'static,
content_length: u64,
content_type: Option<Mime>
) -> &mut Self
pub fn stream_as_body(
&mut self,
body: impl Read + Reset + Debug + Send + Sync + 'static,
content_length: u64,
content_type: Option<Mime>
) -> &mut Self
设置 HTTP 请求体为输入流
sourcepub fn referenced_stream_as_body<T: Read + Reset + Debug + Send + Sync>(
&mut self,
body: &'r mut T,
content_length: u64,
content_type: Option<Mime>
) -> &mut Self
pub fn referenced_stream_as_body<T: Read + Reset + Debug + Send + Sync>(
&mut self,
body: &'r mut T,
content_length: u64,
content_type: Option<Mime>
) -> &mut Self
设置 HTTP 请求体为输入流的可变引用
sourcepub fn bytes_as_body(
&mut self,
body: impl Into<Vec<u8>>,
content_type: Option<Mime>
) -> &mut Self
pub fn bytes_as_body(
&mut self,
body: impl Into<Vec<u8>>,
content_type: Option<Mime>
) -> &mut Self
设置 HTTP 请求体为内存数据
Examples found in repository?
src/client/request/builder.rs (line 684)
683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718
pub fn json(&mut self, body: impl Serialize) -> JsonResult<&mut Self> {
Ok(self.bytes_as_body(serde_json::to_vec(&body)?, Some(APPLICATION_JSON)))
}
/// 设置 HTTP 请求体为表单对象
#[inline]
pub fn post_form<I, K, V>(&mut self, iter: I) -> &mut Self
where
I: IntoIterator,
I::Item: Borrow<(K, Option<V>)>,
K: AsRef<str>,
V: AsRef<str>,
{
let mut form = form_urlencoded::Serializer::new(String::new());
for pair in iter {
let (k, v) = pair.borrow();
if let Some(v) = v {
form.append_pair(k.as_ref(), v.as_ref());
} else {
form.append_key_only(k.as_ref());
}
}
self.bytes_as_body(form.finish().into_bytes(), Some(APPLICATION_WWW_FORM_URLENCODED))
}
/// 设置 HTTP 请求体为 Multipart 表单对象
#[inline]
pub fn multipart<'a>(&mut self, multipart: impl Into<SyncMultipart<'a>>) -> IoResult<&mut Self> {
let mut buf = Vec::new();
let multipart = multipart.into();
let mime = ("multipart/form-data; boundary=".to_owned() + multipart.boundary())
.parse()
.unwrap();
multipart.into_read().read_to_end(&mut buf)?;
Ok(self.bytes_as_body(buf, Some(mime)))
}
sourcepub fn referenced_bytes_as_body(
&mut self,
body: &'r [u8],
content_type: Option<Mime>
) -> &mut Self
pub fn referenced_bytes_as_body(
&mut self,
body: &'r [u8],
content_type: Option<Mime>
) -> &mut Self
设置 HTTP 请求体为内存数据的引用
sourcepub fn json(&mut self, body: impl Serialize) -> JsonResult<&mut Self>
pub fn json(&mut self, body: impl Serialize) -> JsonResult<&mut Self>
设置 HTTP 请求体为 JSON 对象
source§impl<'r, E: EndpointsProvider + Clone + 'r> RequestBuilder<'r, RequestBody<'r>, E>
impl<'r, E: EndpointsProvider + Clone + 'r> RequestBuilder<'r, RequestBody<'r>, E>
sourcepub fn call(&mut self) -> ApiResult<SyncResponse>
pub fn call(&mut self) -> ApiResult<SyncResponse>
阻塞发起 HTTP 请求
Examples found in repository?
More examples
src/regions/regions_provider/bucket_regions_queryer.rs (line 295)
286 287 288 289 290 291 292 293 294 295 296 297 298
fn do_sync_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.queryer
.http_client
.get(&[ServiceName::Uc, ServiceName::Api], &self.queryer.uc_endpoints)
.path("/v4/query")
.append_query_pair("ak", self.access_key.as_str())
.append_query_pair("bucket", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<ResponseBody>()?,
)
}
src/regions/endpoints_provider/bucket_domains_provider.rs (line 281)
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288
fn do_sync_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()?
.parse_json::<Vec<String>>()?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
source§impl<'r, E: 'r> RequestBuilder<'r, AsyncRequestBody<'r>, E>
impl<'r, E: 'r> RequestBuilder<'r, AsyncRequestBody<'r>, E>
sourcepub fn stream_as_body(
&mut self,
body: impl AsyncRead + AsyncReset + Unpin + Debug + Send + Sync + 'static,
content_length: u64,
content_type: Option<Mime>
) -> &mut Self
pub fn stream_as_body(
&mut self,
body: impl AsyncRead + AsyncReset + Unpin + Debug + Send + Sync + 'static,
content_length: u64,
content_type: Option<Mime>
) -> &mut Self
设置 HTTP 请求体为异步输入流
sourcepub fn referenced_stream_as_body<T: AsyncRead + AsyncReset + Unpin + Debug + Send + Sync>(
&mut self,
body: &'r mut T,
content_length: u64,
content_type: Option<Mime>
) -> &mut Self
pub fn referenced_stream_as_body<T: AsyncRead + AsyncReset + Unpin + Debug + Send + Sync>(
&mut self,
body: &'r mut T,
content_length: u64,
content_type: Option<Mime>
) -> &mut Self
设置 HTTP 请求体为异步输入流的可变引用
sourcepub fn bytes_as_body(
&mut self,
body: impl Into<Vec<u8>>,
content_type: Option<Mime>
) -> &mut Self
pub fn bytes_as_body(
&mut self,
body: impl Into<Vec<u8>>,
content_type: Option<Mime>
) -> &mut Self
设置 HTTP 请求体为内存数据
Examples found in repository?
src/client/request/builder.rs (line 793)
792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832
pub fn json(&mut self, body: impl Serialize) -> JsonResult<&mut Self> {
Ok(self.bytes_as_body(serde_json::to_vec(&body)?, Some(APPLICATION_JSON)))
}
/// 设置 HTTP 请求体为表单对象
#[inline]
pub fn post_form<I, K, V>(&mut self, iter: I) -> &mut Self
where
I: IntoIterator,
I::Item: Borrow<(K, Option<V>)>,
K: AsRef<str>,
V: AsRef<str>,
{
let mut form = form_urlencoded::Serializer::new(String::new());
for pair in iter {
let (k, v) = pair.borrow();
if let Some(v) = v {
form.append_pair(k.as_ref(), v.as_ref());
} else {
form.append_key_only(k.as_ref());
}
}
self.bytes_as_body(form.finish().into_bytes(), Some(APPLICATION_WWW_FORM_URLENCODED))
}
/// 设置 HTTP 请求体为 Multipart 表单对象
#[inline]
pub async fn multipart<'a>(
&mut self,
multipart: impl Into<AsyncMultipart<'a>>,
) -> IoResult<&mut RequestBuilder<'r, AsyncRequestBody<'r>, E>> {
use futures::AsyncReadExt;
let mut buf = Vec::new();
let multipart = multipart.into();
let mime = ("multipart/form-data; boundary=".to_owned() + multipart.boundary())
.parse()
.unwrap();
multipart.into_async_read().read_to_end(&mut buf).await?;
Ok(self.bytes_as_body(buf, Some(mime)))
}
sourcepub fn referenced_bytes_as_body(
&mut self,
body: &'r [u8],
content_type: Option<Mime>
) -> &mut Self
pub fn referenced_bytes_as_body(
&mut self,
body: &'r [u8],
content_type: Option<Mime>
) -> &mut Self
设置 HTTP 请求体为内存数据的引用
sourcepub fn json(&mut self, body: impl Serialize) -> JsonResult<&mut Self>
pub fn json(&mut self, body: impl Serialize) -> JsonResult<&mut Self>
设置 HTTP 请求体为 JSON 对象
sourcepub fn post_form<I, K, V>(&mut self, iter: I) -> &mut Selfwhere
I: IntoIterator,
I::Item: Borrow<(K, Option<V>)>,
K: AsRef<str>,
V: AsRef<str>,
pub fn post_form<I, K, V>(&mut self, iter: I) -> &mut Selfwhere
I: IntoIterator,
I::Item: Borrow<(K, Option<V>)>,
K: AsRef<str>,
V: AsRef<str>,
设置 HTTP 请求体为表单对象
sourcepub async fn multipart<'a>(
&mut self,
multipart: impl Into<AsyncMultipart<'a>>
) -> IoResult<&mut RequestBuilder<'r, AsyncRequestBody<'r>, E>>
pub async fn multipart<'a>(
&mut self,
multipart: impl Into<AsyncMultipart<'a>>
) -> IoResult<&mut RequestBuilder<'r, AsyncRequestBody<'r>, E>>
设置 HTTP 请求体为 Multipart 表单对象
source§impl<'r, E: EndpointsProvider + Clone + 'r> RequestBuilder<'r, AsyncRequestBody<'r>, E>
impl<'r, E: EndpointsProvider + Clone + 'r> RequestBuilder<'r, AsyncRequestBody<'r>, E>
sourcepub async fn call(&mut self) -> ApiResult<AsyncResponse>
pub async fn call(&mut self) -> ApiResult<AsyncResponse>
异步发起 HTTP 请求
Examples found in repository?
src/regions/regions_provider/all_regions_provider.rs (line 277)
270 271 272 273 274 275 276 277 278 279 280 281 282
async fn do_async_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.http_client
.async_get(&[ServiceName::Uc], &self.uc_endpoints)
.path("/regions")
.authorization(Authorization::v2(&self.credential_provider))
.accept_json()
.call()
.await?
.parse_json::<ResponseBody>()
.await?,
)
}
More examples
src/regions/regions_provider/bucket_regions_queryer.rs (line 310)
301 302 303 304 305 306 307 308 309 310 311 312 313 314 315
async fn do_async_query(&self) -> ApiResult<GotRegions> {
handle_response_body(
self.queryer
.http_client
.async_get(&[ServiceName::Uc, ServiceName::Api], &self.queryer.uc_endpoints)
.path("/v4/query")
.append_query_pair("ak", self.access_key.as_str())
.append_query_pair("bucket", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<ResponseBody>()
.await?,
)
}
src/regions/endpoints_provider/bucket_domains_provider.rs (line 300)
291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309
async fn do_async_query(&self) -> ApiResult<Endpoints> {
let endpoints: Endpoints = self
.queryer
.http_client
.async_get(&[ServiceName::Uc], &self.queryer.uc_endpoints)
.path("/v2/domains")
.authorization(Authorization::v2(&self.credential))
.append_query_pair("tbl", self.bucket_name.as_str())
.accept_json()
.call()
.await?
.parse_json::<Vec<String>>()
.await?
.into_body()
.into_iter()
.map(Endpoint::from)
.collect();
Ok(endpoints)
}
Trait Implementations§
Auto Trait Implementations§
impl<'r, B, E> !RefUnwindSafe for RequestBuilder<'r, B, E>
impl<'r, B, E> Send for RequestBuilder<'r, B, E>where
B: Send,
E: Send,
impl<'r, B, E> Sync for RequestBuilder<'r, B, E>where
B: Sync,
E: Sync,
impl<'r, B, E> Unpin for RequestBuilder<'r, B, E>where
B: Unpin,
E: Unpin,
impl<'r, B, E> !UnwindSafe for RequestBuilder<'r, B, E>
Blanket Implementations§
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> 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,
Pipes by value. This is generally the method you want to use. Read more
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,
Borrows
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,
Mutably borrows
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) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
Borrows
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) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
Mutably borrows
self
, then passes self.as_mut()
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)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
Immutable access to the
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
Mutable access to the
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
Immutable access to the
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
Mutable access to the
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
Immutable access to the
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
Mutable access to the
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
Calls
.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
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
Calls
.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)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
Calls
.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)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.