如何在 actix 处理程序中设置查询参数的默认选项?
How can I set default options for query parameters in actix handler?
我想在 actix 中为查询值设置默认值。
我知道 Rust 标准库中有一个 Default
结构特征,但老实说我不知道如何在这种情况下应用它。
我的请求查询可能会或可能不会提供分页值页面和 page_size
。
这是我正在尝试做的事情:
src/adapters.rs(我的处理器模块)
pub mod Basic {
#[derive(Deserialize, Default)]
pub struct ListQuery {
page: i64,
per_page: i64,
}
pub async fn articles_list(listQuery: Query<ListQuery>) -> impl Responder {
let query_options = ListQuery;
// should default to { page: 1, per_page: 10 }
// ...
}
}
所以,我怎样才能拥有例如per_page
如果未提供查询参数,则值为 10?
[derive(Default)]
宏通过对所有元素调用 ::default
来派生默认实现。对于 i64,结果为 0。您真正想要做的是自己实施 Default
:
#[derive(Deserialize)]
pub struct ListQuery {
page: i64,
per_page: i64,
}
impl Default for ListQuery {
fn default() -> Self {
ListQuery {
page: 1,
per_page: 10
}
}
}
现在应该会为您提供所需的默认值。
我想在 actix 中为查询值设置默认值。
我知道 Rust 标准库中有一个 Default
结构特征,但老实说我不知道如何在这种情况下应用它。
我的请求查询可能会或可能不会提供分页值页面和 page_size
。
这是我正在尝试做的事情:
src/adapters.rs(我的处理器模块)
pub mod Basic {
#[derive(Deserialize, Default)]
pub struct ListQuery {
page: i64,
per_page: i64,
}
pub async fn articles_list(listQuery: Query<ListQuery>) -> impl Responder {
let query_options = ListQuery;
// should default to { page: 1, per_page: 10 }
// ...
}
}
所以,我怎样才能拥有例如per_page
如果未提供查询参数,则值为 10?
[derive(Default)]
宏通过对所有元素调用 ::default
来派生默认实现。对于 i64,结果为 0。您真正想要做的是自己实施 Default
:
#[derive(Deserialize)]
pub struct ListQuery {
page: i64,
per_page: i64,
}
impl Default for ListQuery {
fn default() -> Self {
ListQuery {
page: 1,
per_page: 10
}
}
}
现在应该会为您提供所需的默认值。