pub struct RequestExecutor;Expand description
通用请求执行器,统一处理API调用逻辑 消除重复的请求-响应处理代码,提供统一的API调用入口
Implementations§
Source§impl RequestExecutor
impl RequestExecutor
Sourcepub async fn get<T: ApiResponseTrait>(
config: &Config,
path: &str,
supported_tokens: Vec<AccessTokenType>,
query_params: Option<HashMap<String, String>>,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn get<T: ApiResponseTrait>( config: &Config, path: &str, supported_tokens: Vec<AccessTokenType>, query_params: Option<HashMap<String, String>>, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
执行GET请求
Sourcepub async fn post<T: ApiResponseTrait, B: Serialize>(
config: &Config,
path: &str,
supported_tokens: Vec<AccessTokenType>,
body: Option<B>,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn post<T: ApiResponseTrait, B: Serialize>( config: &Config, path: &str, supported_tokens: Vec<AccessTokenType>, body: Option<B>, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
执行POST请求
Sourcepub async fn put<T: ApiResponseTrait, B: Serialize>(
config: &Config,
path: &str,
supported_tokens: Vec<AccessTokenType>,
body: Option<B>,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn put<T: ApiResponseTrait, B: Serialize>( config: &Config, path: &str, supported_tokens: Vec<AccessTokenType>, body: Option<B>, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
执行PUT请求
Sourcepub async fn delete<T: ApiResponseTrait>(
config: &Config,
path: &str,
supported_tokens: Vec<AccessTokenType>,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn delete<T: ApiResponseTrait>( config: &Config, path: &str, supported_tokens: Vec<AccessTokenType>, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
执行DELETE请求
Sourcepub async fn patch<T: ApiResponseTrait, B: Serialize>(
config: &Config,
path: &str,
supported_tokens: Vec<AccessTokenType>,
body: Option<B>,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn patch<T: ApiResponseTrait, B: Serialize>( config: &Config, path: &str, supported_tokens: Vec<AccessTokenType>, body: Option<B>, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
执行PATCH请求
Sourcepub async fn execute<T: ApiResponseTrait, B: Serialize>(
config: &Config,
method: Method,
path: &str,
supported_tokens: Vec<AccessTokenType>,
query_params: Option<HashMap<String, String>>,
body: Option<B>,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn execute<T: ApiResponseTrait, B: Serialize>( config: &Config, method: Method, path: &str, supported_tokens: Vec<AccessTokenType>, query_params: Option<HashMap<String, String>>, body: Option<B>, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
通用请求执行器核心方法
§参数
config: 应用配置,包含认证信息method: HTTP方法path: API路径supported_tokens: 支持的访问令牌类型query_params: 查询参数(可选)body: 请求体(可选)option: 请求选项(可选)
§返回值
返回标准的BaseResponse<T>格式响应
§示例
ⓘ
// GET请求
let response: BaseResponse<MessageList> = RequestExecutor::execute(
&config,
Method::GET,
"/open-apis/im/v1/messages",
vec![AccessTokenType::Tenant, AccessTokenType::User],
Some(query_params),
None::<()>,
None,
).await?;
// POST请求
let response: BaseResponse<Message> = RequestExecutor::execute(
&config,
Method::POST,
"/open-apis/im/v1/messages",
vec![AccessTokenType::Tenant, AccessTokenType::User],
None,
Some(create_request),
None,
).await?;Sourcepub async fn execute_with_path_params<T: ApiResponseTrait, B: Serialize>(
config: &Config,
method: Method,
path_template: &str,
path_params: HashMap<&str, &str>,
supported_tokens: Vec<AccessTokenType>,
query_params: Option<HashMap<String, String>>,
body: Option<B>,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn execute_with_path_params<T: ApiResponseTrait, B: Serialize>( config: &Config, method: Method, path_template: &str, path_params: HashMap<&str, &str>, supported_tokens: Vec<AccessTokenType>, query_params: Option<HashMap<String, String>>, body: Option<B>, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
带路径参数的请求执行器
支持在路径中动态替换参数,如 /open-apis/im/v1/messages/{message_id}
§参数
path_template: 包含占位符的路径模板,如 “/open-apis/im/v1/messages/{message_id}”path_params: 路径参数映射,如 HashMap::from([(“message_id”, “om_xxx”)])- 其他参数同
execute方法
§示例
ⓘ
let path_params = HashMap::from([("message_id", "om_xxx")]);
let response = RequestExecutor::execute_with_path_params(
&config,
Method::GET,
"/open-apis/im/v1/messages/{message_id}",
path_params,
vec![AccessTokenType::Tenant],
None,
None::<()>,
None,
).await?;Sourcepub async fn json_request<T: ApiResponseTrait, B: Serialize>(
config: &Config,
method: Method,
path: &str,
body: &B,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn json_request<T: ApiResponseTrait, B: Serialize>( config: &Config, method: Method, path: &str, body: &B, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
Sourcepub async fn query_request<T: ApiResponseTrait>(
config: &Config,
path: &str,
query_params: Option<HashMap<String, String>>,
option: Option<RequestOption>,
) -> SDKResult<BaseResponse<T>>
pub async fn query_request<T: ApiResponseTrait>( config: &Config, path: &str, query_params: Option<HashMap<String, String>>, option: Option<RequestOption>, ) -> SDKResult<BaseResponse<T>>
Auto Trait Implementations§
impl Freeze for RequestExecutor
impl RefUnwindSafe for RequestExecutor
impl Send for RequestExecutor
impl Sync for RequestExecutor
impl Unpin for RequestExecutor
impl UnwindSafe for RequestExecutor
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
Mutably borrows from an owned value. Read more