请求
2025年5月8日大约 3 分钟hyperlanewebrustusage-introductionrequest
提示
hyperlane
框架对 ctx
额外封装了子字段的方法,可以直接调用大部分子字段的 get
和 set
方法名称 例如:调用 request
上的 get_method
方法, 一般需要从 ctx
解出 request
,再调用request.get_method()
, 可以简化成直接调用 ctx.get_request_method().await
调用规律
- 原
request
的get
方法的get
名称后加request
名称,中间使用_拼接 - 原
request
的set
方法的set
名称后加request
名称,中间使用_拼接
获取请求信息
获取 request
推荐
let request: Request = ctx.get_request().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let request: Request = ctx.get_request().clone();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let request: Request = ctx.get_request().clone();
获取 method
推荐
let method: RequestMethod = ctx.get_request_method().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let method: RequestMethod = ctx.get_request().get_method();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let method: RequestMethod = ctx.get_request().get_method();
获取 host
推荐
let host: RequestHost = ctx.get_request_host().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let host: RequestHost = ctx.get_request().get_host();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let host: RequestHost = ctx.get_request().get_host();
获取 path
推荐
let path: RequestPath = ctx.get_request_path().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let path: RequestPath = ctx.get_request().get_path();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let path: RequestPath = ctx.get_request().get_path();
获取 querys
推荐
let querys: RequestQuerys = ctx.get_request_querys().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let querys: RequestQuerys = ctx.get_request().get_querys();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let querys: RequestQuerys = ctx.get_request().get_querys();
获取 header
提示
hyperlane
框架请求头的 key
是经过全小写处理,所以获取请求头时需要注意 key
使用全小写
推荐
let header: OptionRequestHeadersValue = ctx.get_request_header("key").await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let header: OptionRequestHeadersValue = ctx.get_request().get_header("key");
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let header: OptionRequestHeadersValue = ctx.get_request().get_header("key");
获取 headers
推荐
let headers: RequestHeaders = ctx.get_request_headers().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let headers: RequestHeaders = ctx.get_request().get_headers();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let headers: RequestHeaders = ctx.get_request().get_headers();
获取请求体
推荐
let body: RequestBody = ctx.get_request_body().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let body: RequestBody = ctx.get_request().get_body();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let body: RequestBody = ctx.get_request().get_body();
获取 string
格式的请求体
推荐
let body: String = ctx.get_request_body_string().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let body: String = ctx.get_request().get_body_string();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let body: String = ctx.get_request().get_body_string();
获取 json
格式的请求体
推荐
let body: T = ctx.get_request_body_json::<T>().await;
通过读锁
let mut ctx: RwLockReadContext = ctx.get_read_lock().await;
let body: T = ctx.get_request().get_body_json::<T>();
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let body: T = ctx.get_request().get_body_json::<T>();
获取可变请求信息
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let request: &mut Request = ctx.get_mut_request();
设置请求信息
推荐
ctx.set_request(Request::default()).await;
通过写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
ctx.set_request(Request::default());
修改请求
获取写锁
let mut ctx: RwLockWriteContext = ctx.get_write_lock().await;
let request: &mut Request = ctx.get_mut_request();
修改 method
request.set_method(GET.to_owned());
修改 host
request.set_host("localhost".to_owned());
修改 path
request.set_path("server".to_owned());
修改 query
request.set_query("server", "hyperlane");
修改 querys
request.set_querys(HashMap::new());
修改 hash
request.set_hash("server".to_owned());
修改 header
提示
hyperlane
框架请求头的 key
是经过全小写处理,所以更新请求头时需要注意 key
使用全小写
request.set_header("server", "hyperlane");
修改 headers
request.set_headers(HashMap::new());
修改 body
request.set_body(vec![]);
转字符串
通过 to_string
提示
将获得完整的原始结构体字符串结构
request.to_string();
通过 get_string
提示
将获得简化的结构体字符串结构
request.get_string();