rust - 如何在 actix 处理程序中设置查询参数的默认选项?
问题描述
我想为 actix 中的查询值设置默认值。
我知道Default
Rust 标准库中的结构有一个 Trait,但老实说,我不知道如何在这种情况下应用它。
在我的情况下,请求查询可能会也可能不会提供分页值页面和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
}
}
}
这现在应该为您提供所需的默认值。
推荐阅读
- python - Xlsxwriter 什么都不做,但没有错误消息
- azure - 有没有办法为在 Azure 函数中执行的 docker run 命令指定自定义参数
- apache-spark - 如何在 Databricks 中迭代以读取存储在数据湖不同子目录中的数百个文件?
- python - 如何处理 div 类型的下拉菜单,而不是在 selenium/python 中选择
- pandas - 数据框python从年,月,日转换为工作日
- java - 在 MapStruct 中转换为相同的子对象
- reactjs - Reactstrap 输入验证错误。需要帮助
- javascript - 没有从reactjs中的输入字段编辑值
- arrays - Xcode 如何声明我的单元格以显示我的 UITableViewCell?
- ibm-cloud - 如何让 Watson Assistant 将 3 小时识别为 3 小时后?