Use the Query extractor with a serde::Deserialize struct to parse page and per_page parameters directly in your handler.
use axum::{extract::Query, routing::get, Router};
use serde::Deserialize;
#[derive(Deserialize)]
struct Pagination {
page: usize,
per_page: usize,
}
async fn list_items(pagination: Query<Pagination>) {
let page = pagination.0.page;
let per_page = pagination.0.per_page;
// Fetch and return paginated data here
}
let app = Router::new().route("/items", get(list_items));