diff --git a/examples/hello-name.rs b/examples/hello-name.rs index 5ce79561..3e9de96b 100644 --- a/examples/hello-name.rs +++ b/examples/hello-name.rs @@ -9,8 +9,8 @@ impl Extension for HelloName { } async fn hello_name( - request: HttpRequest, web::Path(name): web::Path, + request: HttpRequest, ) -> Result { Page::new(request) .with_child(Html::with(move |_| { diff --git a/src/web.rs b/src/web.rs index 3705b9ae..19f62476 100644 --- a/src/web.rs +++ b/src/web.rs @@ -61,6 +61,26 @@ use std::task::{Context, Poll}; /// // ... /// } /// ``` +/// +/// # Orden de parámetros en el *handler* +/// +/// `HttpRequest` toma las extensiones de la petición al extraerse. Los extractores que leen de ahí +/// (como `Path` o `Extension`) deben aparecer **antes** en la lista de parámetros del +/// *handler*: +/// +/// ```rust,no_run +/// # use pagetop::prelude::*; +/// // Correcto: Path se declara antes que HttpRequest. +/// async fn view_post( +/// web::Path(id): web::Path, +/// request: HttpRequest, +/// ) -> Result { +/// # todo!() +/// } +/// ``` +/// +/// Los extractores que no dependen de las extensiones, como `Query` o `Method`, no están sujetos +/// a esta restricción. #[derive(Clone, Debug)] pub struct HttpRequest { uri: http::Uri,