mirror of
https://github.com/actix/actix-web.git
synced 2024-12-22 08:07:18 +00:00
add extractor info to the guide
This commit is contained in:
parent
8fff2c7595
commit
b03c7051ff
1 changed files with 37 additions and 0 deletions
|
@ -323,6 +323,43 @@ fn main() {
|
|||
List of `FromParam` implementation could be found in
|
||||
[api docs](../actix_web/dev/trait.FromParam.html#foreign-impls)
|
||||
|
||||
## Path information extractor
|
||||
|
||||
Actix provides functionality for type safe request's path information extraction.
|
||||
It uses *serde* package as a deserialization library.
|
||||
[HttpRequest::extract_path()](../actix_web/struct.HttpRequest.html#method.extract_path)
|
||||
method extracts information, destination type has to implements `Deserialize` trait
|
||||
from *serde* libary.
|
||||
|
||||
```rust
|
||||
# extern crate bytes;
|
||||
# extern crate actix_web;
|
||||
# extern crate futures;
|
||||
#[macro_use] extern crate serde_derive;
|
||||
use actix_web::*;
|
||||
use actix_web::dev::{Path, HttpRequestExtractor};
|
||||
|
||||
#[derive(Deserialize)]
|
||||
struct Info {
|
||||
username: String,
|
||||
}
|
||||
|
||||
fn index(mut req: HttpRequest) -> Result<String> {
|
||||
let info: Info = Path.extract(&req)?; // <- extract path info using serde
|
||||
Ok(format!("Welcome {}!", info.username))
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let app = Application::new()
|
||||
.resource("/{username}/index.html", // <- define path parameters
|
||||
|r| r.method(Method::GET).f(index));
|
||||
}
|
||||
```
|
||||
|
||||
[HttpRequest::extract_query()](../actix_web/struct.HttpRequest.html#method.extract_query)
|
||||
method provides similar functionality for request's query parameters.
|
||||
|
||||
|
||||
## Generating resource URLs
|
||||
|
||||
Use the [HttpRequest.url_for()](../actix_web/struct.HttpRequest.html#method.url_for)
|
||||
|
|
Loading…
Reference in a new issue