🐛 Corrige orden de extractores en handlers
`HttpRequest` vacía `parts.extensions` al extraerse; `Path<T>` y otros extractores que dependen de ellas deben declararse antes en el handler. Corregido en el ejemplo hello-name y documentado en HttpRequest.
This commit is contained in:
parent
8aa4372bdf
commit
aa8b109668
2 changed files with 21 additions and 1 deletions
|
|
@ -9,8 +9,8 @@ impl Extension for HelloName {
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn hello_name(
|
async fn hello_name(
|
||||||
request: HttpRequest,
|
|
||||||
web::Path(name): web::Path<String>,
|
web::Path(name): web::Path<String>,
|
||||||
|
request: HttpRequest,
|
||||||
) -> Result<Markup, ErrorPage> {
|
) -> Result<Markup, ErrorPage> {
|
||||||
Page::new(request)
|
Page::new(request)
|
||||||
.with_child(Html::with(move |_| {
|
.with_child(Html::with(move |_| {
|
||||||
|
|
|
||||||
20
src/web.rs
20
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<T>` o `Extension<T>`) deben aparecer **antes** en la lista de parámetros del
|
||||||
|
/// *handler*:
|
||||||
|
///
|
||||||
|
/// ```rust,no_run
|
||||||
|
/// # use pagetop::prelude::*;
|
||||||
|
/// // Correcto: Path<T> se declara antes que HttpRequest.
|
||||||
|
/// async fn view_post(
|
||||||
|
/// web::Path(id): web::Path<u32>,
|
||||||
|
/// request: HttpRequest,
|
||||||
|
/// ) -> Result<Markup, ErrorPage> {
|
||||||
|
/// # todo!()
|
||||||
|
/// }
|
||||||
|
/// ```
|
||||||
|
///
|
||||||
|
/// Los extractores que no dependen de las extensiones, como `Query<T>` o `Method`, no están sujetos
|
||||||
|
/// a esta restricción.
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct HttpRequest {
|
pub struct HttpRequest {
|
||||||
uri: http::Uri,
|
uri: http::Uri,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue