请求
2025年8月17日大约 2 分钟hyperlanewebrustusage-introductionrequest
提示
hyperlane
框架对 ctx
额外封装了子字段的方法,可以直接调用大部分子字段的 get
和 set
方法名称。 例如:调用 request
上的 get_method
方法, 一般需要从 ctx
解出 request
,再调用request.get_method()
, 可以简化成直接调用 ctx.get_request_method().await
。
调用规律
request
仅支持get
,不支持set
,框架保证请求信息不会被意外修改。- 原
request
的get
方法的get
名称后加request
名称,中间使用_拼接。
获取请求信息
获取 request
let request: Request = ctx.get_request().await;
获取 method
let method: RequestMethod = ctx.get_request_method().await;
获取 host
let host: RequestHost = ctx.get_request_host().await;
获取 path
let path: RequestPath = ctx.get_request_path().await;
获取 version
let version: RequestVersion = ctx.get_request_version().await;
获取 querys
let querys: RequestQuerys = ctx.get_request_querys().await;
获取特定查询参数
let query_value: OptionRequestQuerysValue = ctx.get_request_query("key").await;
获取 header
提示
hyperlane
框架请求头的 key
是经过全小写处理,建议使用框架定义的常量。
let header: OptionRequestHeadersValue = ctx.get_request_header(CONTENT_TYPE).await;
获取 headers
let headers: RequestHeaders = ctx.get_request_headers().await;
获取请求头的第一个值
let header_value: OptionRequestHeadersValueItem = ctx.get_request_header_front(CONTENT_TYPE).await;
获取请求头的最后一个值
let header_value: OptionRequestHeadersValueItem = ctx.get_request_header_back(ACCEPT).await;
获取请求头值的数量
let header_count: usize = ctx.get_request_header_len(ACCEPT_ENCODING).await;
获取所有请求头值的总数量
let total_values: usize = ctx.get_request_headers_values_length().await;
获取请求头的数量
let headers_count: usize = ctx.get_request_headers_length().await;
检查是否存在特定请求头
let has_header: bool = ctx.has_request_header(CONTENT_TYPE).await;
检查请求头是否包含特定值
let has_value: bool = ctx.has_request_header_value(CONTENT_TYPE, APPLICATION_JSON).await;
获取请求体
let body: RequestBody = ctx.get_request_body().await;
获取 string
格式的请求体
let body: String = ctx.get_request_body_string().await;
获取 json
格式的请求体
let body: T = ctx.get_request_body_json::<T>().await;
获取请求升级类型
let upgrade_type: UpgradeType = ctx.get_request_upgrade_type().await;
执行闭包操作
使用请求执行异步闭包
let result = ctx.with_request(|request| async move {
request.get_method()
}).await;
转字符串
通过 to_string
提示
将获得完整的原始结构体字符串结构。
ctx.get_request().await.to_string();
通过 get_string
提示
将获得简化的结构体字符串结构。
ctx.get_request().await.get_string();
通过 ctx.get_request_string
let request_string: String = ctx.get_request_string().await;