如何在 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
    }
  }
}

现在应该会为您提供所需的默认值。