2018-10-10 17:38:33 +02:00
<!DOCTYPE html> < html lang = "en" > < head > < meta charset = "utf-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < meta name = "generator" content = "rustdoc" > < meta name = "description" content = "API documentation for the Rust `HttpMessage` trait in crate `actix_web`." > < meta name = "keywords" content = "rust, rustlang, rust-lang, HttpMessage" > < title > actix_web::HttpMessage - Rust< / title > < link rel = "stylesheet" type = "text/css" href = "../normalize.css" > < link rel = "stylesheet" type = "text/css" href = "../rustdoc.css" id = "mainThemeStyle" > < link rel = "stylesheet" type = "text/css" href = "../dark.css" > < link rel = "stylesheet" type = "text/css" href = "../light.css" id = "themeStyle" > < script src = "../storage.js" > < / script > < / head > < body class = "rustdoc trait" > <!-- [if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif] --> < nav class = "sidebar" > < div class = "sidebar-menu" > ☰ < / div > < p class = 'location' > Trait HttpMessage< / p > < div class = "sidebar-elems" > < div class = "block items" > < a class = "sidebar-title" href = "#associated-types" > Associated Types< / a > < div class = "sidebar-links" > < a href = "#associatedtype.Stream" > Stream< / a > < / div > < a class = "sidebar-title" href = "#required-methods" > Required Methods< / a > < div class = "sidebar-links" > < a href = "#tymethod.headers" > headers< / a > < a href = "#tymethod.payload" > payload< / a > < / div > < a class = "sidebar-title" href = "#provided-methods" > Provided Methods< / a > < div class = "sidebar-links" > < a href = "#method.content_type" > content_type< / a > < a href = "#method.encoding" > encoding< / a > < a href = "#method.mime_type" > mime_type< / a > < a href = "#method.chunked" > chunked< / a > < a href = "#method.body" > body< / a > < a href = "#method.urlencoded" > urlencoded< / a > < a href = "#method.json" > json< / a > < a href = "#method.multipart" > multipart< / a > < a href = "#method.readlines" > readlines< / a > < / div > < a class = "sidebar-title" href = "#implementors" > Implementors< / a > < / div > < p class = 'location' > < a href = 'index.html' > actix_web< / a > < / p > < script > window . sidebarCurrent = { name : 'HttpMessage' , ty : 'trait' , relpath : '' } ; < / script > < script defer src = "sidebar-items.js" > < / script > < / div > < / nav > < div class = "theme-picker" > < button id = "theme-picker" aria-label = "Pick another theme!" > < img src = "../brush.svg" width = "18" alt = "Pick another theme!" > < / button > < div id = "theme-choices" > < / div > < / div > < script src = "../theme.js" > < / script > < nav class = "sub" > < form class = "search-form js-only" > < div class = "search-container" > < input class = "search-input" name = "search" autocomplete = "off" placeholder = "Click or press ‘ S’ to search, ‘ ?’ for more options…" type = "search" > < a id = "settings-menu" href = "../settings.html" > < img src = "../wheel.svg" width = "18" alt = "Change settings" > < / a > < / div > < / form > < / nav > < section id = "main" class = "content" > < h1 class = 'fqn' > < span class = 'out-of-band' > < span id = 'render-detail' > < a id = "toggle-all-docs" href = "javascript:void(0)" title = "collapse all docs" > [< span class = 'inner' > − < / span > ]< / a > < / span > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#21-250' title = 'goto source code' > [src]< / a > < / span > < span class = 'in-band' > Trait < a href = 'index.html' > actix_web< / a > ::< wbr > < a class = "trait" href = '' > HttpMessage< / a > < / span > < / h1 > < div class = "docblock type-decl hidden-by-usual-hider" > < pre class = 'rust trait' > pub trait HttpMessage: < a class = "trait" href = "https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title = "trait core::marker::Sized" > Sized< / a > {
type < a href = '#associatedtype.Stream' class = "type" > Stream< / a > : < a class = "trait" href = "https://docs.rs/futures/0.1/futures/stream/trait.Stream.html" title = "trait futures::stream::Stream" > Stream< / a > < Item = < a class = "struct" href = "https://docs.rs/bytes/0.4.10/bytes/bytes/struct.Bytes.html" title = "struct bytes::bytes::Bytes" > Bytes< / a > , Error = < a class = "enum" href = "../actix_web/error/enum.PayloadError.html" title = "enum actix_web::error::PayloadError" > PayloadError< / a > > + < a class = "trait" href = "https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title = "trait core::marker::Sized" > Sized< / a > ;
2018-07-21 13:09:47 +02:00
fn < a href = '#tymethod.headers' class = 'fnname' > headers< / a > (& self) -> & < a class = "struct" href = "../actix_web/http/header/struct.HeaderMap.html" title = "struct actix_web::http::header::HeaderMap" > HeaderMap< / a > ;
< div class = 'item-spacer' > < / div > fn < a href = '#tymethod.payload' class = 'fnname' > payload< / a > (& self) -> Self::< a class = "type" href = "../actix_web/trait.HttpMessage.html#associatedtype.Stream" title = "type actix_web::HttpMessage::Stream" > Stream< / a > ;
fn < a href = '#method.content_type' class = 'fnname' > content_type< / a > (& self) -> & < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.str.html" > str< / a > { ... }
< div class = 'item-spacer' > < / div > fn < a href = '#method.encoding' class = 'fnname' > encoding< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < EncodingRef, < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > { ... }
2018-10-10 17:38:33 +02:00
< div class = 'item-spacer' > < / div > fn < a href = '#method.mime_type' class = 'fnname' > mime_type< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title = "enum core::option::Option" > Option< / a > < < a class = "struct" href = "https://docs.rs/mime/0.3.9/mime/struct.Mime.html" title = "struct mime::Mime" > Mime< / a > > , < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > { ... }
2018-07-21 13:09:47 +02:00
< div class = 'item-spacer' > < / div > fn < a href = '#method.chunked' class = 'fnname' > chunked< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.bool.html" > bool< / a > , < a class = "enum" href = "../actix_web/error/enum.ParseError.html" title = "enum actix_web::error::ParseError" > ParseError< / a > > { ... }
< div class = 'item-spacer' > < / div > fn < a href = '#method.body' class = 'fnname' > body< / a > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.MessageBody.html" title = "struct actix_web::dev::MessageBody" > MessageBody< / a > < Self> { ... }
2018-10-10 17:38:33 +02:00
< div class = 'item-spacer' > < / div > fn < a href = '#method.urlencoded' class = 'fnname' > urlencoded< / a > < T: < a class = "trait" href = "https://docs.rs/serde/1.0.79/serde/de/trait.DeserializeOwned.html" title = "trait serde::de::DeserializeOwned" > DeserializeOwned< / a > > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.UrlEncoded.html" title = "struct actix_web::dev::UrlEncoded" > UrlEncoded< / a > < Self, T> { ... }
< div class = 'item-spacer' > < / div > fn < a href = '#method.json' class = 'fnname' > json< / a > < T: < a class = "trait" href = "https://docs.rs/serde/1.0.79/serde/de/trait.DeserializeOwned.html" title = "trait serde::de::DeserializeOwned" > DeserializeOwned< / a > > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.JsonBody.html" title = "struct actix_web::dev::JsonBody" > JsonBody< / a > < Self, T> { ... }
2018-07-21 13:09:47 +02:00
< div class = 'item-spacer' > < / div > fn < a href = '#method.multipart' class = 'fnname' > multipart< / a > (& self) -> < a class = "struct" href = "../actix_web/multipart/struct.Multipart.html" title = "struct actix_web::multipart::Multipart" > Multipart< / a > < Self::< a class = "type" href = "../actix_web/trait.HttpMessage.html#associatedtype.Stream" title = "type actix_web::HttpMessage::Stream" > Stream< / a > > { ... }
2018-10-10 17:38:33 +02:00
< div class = 'item-spacer' > < / div > fn < a href = '#method.readlines' class = 'fnname' > readlines< / a > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.Readlines.html" title = "struct actix_web::dev::Readlines" > Readlines< / a > < Self> { ... }
2018-07-21 13:09:47 +02:00
}< / pre > < / div > < div class = 'docblock' > < p > Trait that implements general purpose operations on http messages< / p >
< / div >
< h2 id = 'associated-types' class = 'small-section-header' >
Associated Types< a href = '#associated-types' class = 'anchor' > < / a >
< / h2 >
< div class = 'methods' >
2018-10-10 17:38:33 +02:00
< h3 id = 'associatedtype.Stream' class = 'method' > < span id = 'Stream.t' class = 'invisible' > < code > type < a href = '#associatedtype.Stream' class = "type" > Stream< / a > : < a class = "trait" href = "https://docs.rs/futures/0.1/futures/stream/trait.Stream.html" title = "trait futures::stream::Stream" > Stream< / a > < Item = < a class = "struct" href = "https://docs.rs/bytes/0.4.10/bytes/bytes/struct.Bytes.html" title = "struct bytes::bytes::Bytes" > Bytes< / a > , Error = < a class = "enum" href = "../actix_web/error/enum.PayloadError.html" title = "enum actix_web::error::PayloadError" > PayloadError< / a > > + < a class = "trait" href = "https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title = "trait core::marker::Sized" > Sized< / a > < / code > < / span > < / h3 > < div class = 'docblock' > < p > Type of message payload stream< / p >
2018-07-21 13:09:47 +02:00
< / div > < / div >
< h2 id = 'required-methods' class = 'small-section-header' >
Required Methods< a href = '#required-methods' class = 'anchor' > < / a >
< / h2 >
< div class = 'methods' >
< h3 id = 'tymethod.headers' class = 'method' > < span id = 'headers.v' class = 'invisible' > < code > fn < a href = '#tymethod.headers' class = 'fnname' > headers< / a > (& self) -> & < a class = "struct" href = "../actix_web/http/header/struct.HeaderMap.html" title = "struct actix_web::http::header::HeaderMap" > HeaderMap< / a > < / code > < / span > < / h3 > < div class = 'docblock' > < p > Read the message headers.< / p >
< / div > < h3 id = 'tymethod.payload' class = 'method' > < span id = 'payload.v' class = 'invisible' > < code > fn < a href = '#tymethod.payload' class = 'fnname' > payload< / a > (& self) -> Self::< a class = "type" href = "../actix_web/trait.HttpMessage.html#associatedtype.Stream" title = "type actix_web::HttpMessage::Stream" > Stream< / a > < / code > < / span > < / h3 > < div class = 'docblock' > < p > Message payload stream< / p >
< / div > < / div >
< h2 id = 'provided-methods' class = 'small-section-header' >
Provided Methods< a href = '#provided-methods' class = 'anchor' > < / a >
< / h2 >
< div class = 'methods' >
< h3 id = 'method.content_type' class = 'method' > < span id = 'content_type.v' class = 'invisible' > < code > fn < a href = '#method.content_type' class = 'fnname' > content_type< / a > (& self) -> & < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.str.html" > str< / a > < / code > < / span > < / h3 > < div class = 'docblock' > < p > Read the request content type. If request does not contain
< em > Content-Type< / em > header, empty str get returned.< / p >
< / div > < h3 id = 'method.encoding' class = 'method' > < span id = 'encoding.v' class = 'invisible' > < code > fn < a href = '#method.encoding' class = 'fnname' > encoding< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < EncodingRef, < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > < / code > < / span > < / h3 > < div class = 'docblock' > < p > Get content type encoding< / p >
< p > UTF-8 is used by default, If request charset is not set.< / p >
2018-10-10 17:38:33 +02:00
< / div > < h3 id = 'method.mime_type' class = 'method' > < span id = 'mime_type.v' class = 'invisible' > < code > fn < a href = '#method.mime_type' class = 'fnname' > mime_type< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title = "enum core::option::Option" > Option< / a > < < a class = "struct" href = "https://docs.rs/mime/0.3.9/mime/struct.Mime.html" title = "struct mime::Mime" > Mime< / a > > , < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > < / code > < / span > < / h3 > < div class = 'docblock' > < p > Convert the request content type to a known mime type.< / p >
2018-07-21 13:09:47 +02:00
< / div > < h3 id = 'method.chunked' class = 'method' > < span id = 'chunked.v' class = 'invisible' > < code > fn < a href = '#method.chunked' class = 'fnname' > chunked< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.bool.html" > bool< / a > , < a class = "enum" href = "../actix_web/error/enum.ParseError.html" title = "enum actix_web::error::ParseError" > ParseError< / a > > < / code > < / span > < / h3 > < div class = 'docblock' > < p > Check if request has chunked transfer encoding< / p >
< / div > < h3 id = 'method.body' class = 'method' > < span id = 'body.v' class = 'invisible' > < code > fn < a href = '#method.body' class = 'fnname' > body< / a > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.MessageBody.html" title = "struct actix_web::dev::MessageBody" > MessageBody< / a > < Self> < / code > < / span > < / h3 > < div class = 'docblock' > < p > Load http message body.< / p >
< p > By default only 256Kb payload reads to a memory, then
< code > PayloadError::Overflow< / code > get returned. Use < code > MessageBody::limit()< / code >
method to change upper limit.< / p >
< h2 id = "server-example" class = "section-header" > < a href = "#server-example" > Server example< / a > < / h2 >
< pre class = "rust rust-example-rendered" >
< span class = "kw" > use< / span > < span class = "ident" > actix_web< / span > ::{
< span class = "ident" > AsyncResponder< / span > , < span class = "ident" > FutureResponse< / span > , < span class = "ident" > HttpMessage< / span > , < span class = "ident" > HttpRequest< / span > , < span class = "ident" > HttpResponse< / span > ,
};
< span class = "kw" > use< / span > < span class = "ident" > bytes< / span > ::< span class = "ident" > Bytes< / span > ;
< span class = "kw" > use< / span > < span class = "ident" > futures< / span > ::< span class = "ident" > future< / span > ::< span class = "ident" > Future< / span > ;
< span class = "kw" > fn< / span > < span class = "ident" > index< / span > (< span class = "kw-2" > mut< / span > < span class = "ident" > req< / span > : < span class = "ident" > HttpRequest< / span > ) < span class = "op" > -> < / span > < span class = "ident" > FutureResponse< / span > < span class = "op" > < < / span > < span class = "ident" > HttpResponse< / span > < span class = "op" > > < / span > {
< span class = "ident" > req< / span > .< span class = "ident" > body< / span > () < span class = "comment" > // < - get Body future< / span >
.< span class = "ident" > limit< / span > (< span class = "number" > 1024< / span > ) < span class = "comment" > // < - change max size of the body to a 1kb< / span >
.< span class = "ident" > from_err< / span > ()
.< span class = "ident" > and_then< / span > (< span class = "op" > |< / span > < span class = "ident" > bytes< / span > : < span class = "ident" > Bytes< / span > < span class = "op" > |< / span > { < span class = "comment" > // < - complete body< / span >
< span class = "macro" > println< / span > < span class = "macro" > !< / span > (< span class = "string" > " ==== BODY ==== {:?}" < / span > , < span class = "ident" > bytes< / span > );
< span class = "prelude-val" > Ok< / span > (< span class = "ident" > HttpResponse< / span > ::< span class = "prelude-val" > Ok< / span > ().< span class = "ident" > into< / span > ())
}).< span class = "ident" > responder< / span > ()
}< / pre >
2018-10-10 17:38:33 +02:00
< / div > < h3 id = 'method.urlencoded' class = 'method' > < span id = 'urlencoded.v' class = 'invisible' > < code > fn < a href = '#method.urlencoded' class = 'fnname' > urlencoded< / a > < T: < a class = "trait" href = "https://docs.rs/serde/1.0.79/serde/de/trait.DeserializeOwned.html" title = "trait serde::de::DeserializeOwned" > DeserializeOwned< / a > > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.UrlEncoded.html" title = "struct actix_web::dev::UrlEncoded" > UrlEncoded< / a > < Self, T> < / code > < / span > < / h3 > < div class = 'docblock' > < p > Parse < code > application/x-www-form-urlencoded< / code > encoded request's body.
2018-07-21 13:09:47 +02:00
Return < code > UrlEncoded< / code > future. Form can be deserialized to any type that
implements < code > Deserialize< / code > trait from < em > serde< / em > .< / p >
< p > Returns error:< / p >
< ul >
< li > content type is not < code > application/x-www-form-urlencoded< / code > < / li >
< li > content-length is greater than 256k< / li >
< / ul >
< h2 id = "server-example-1" class = "section-header" > < a href = "#server-example-1" > Server example< / a > < / h2 >
< pre class = "rust rust-example-rendered" >
< span class = "kw" > use< / span > < span class = "ident" > actix_web< / span > ::{< span class = "ident" > FutureResponse< / span > , < span class = "ident" > HttpMessage< / span > , < span class = "ident" > HttpRequest< / span > , < span class = "ident" > HttpResponse< / span > };
< span class = "kw" > fn< / span > < span class = "ident" > index< / span > (< span class = "kw-2" > mut< / span > < span class = "ident" > req< / span > : < span class = "ident" > HttpRequest< / span > ) < span class = "op" > -> < / span > < span class = "ident" > FutureResponse< / span > < span class = "op" > < < / span > < span class = "ident" > HttpResponse< / span > < span class = "op" > > < / span > {
< span class = "ident" > Box< / span > ::< span class = "ident" > new< / span > (
< span class = "ident" > req< / span > .< span class = "ident" > urlencoded< / span > ::< span class = "op" > < < / span > < span class = "ident" > HashMap< / span > < span class = "op" > < < / span > < span class = "ident" > String< / span > , < span class = "ident" > String< / span > < span class = "op" > > > < / span > () < span class = "comment" > // < - get UrlEncoded future< / span >
.< span class = "ident" > from_err< / span > ()
.< span class = "ident" > and_then< / span > (< span class = "op" > |< / span > < span class = "ident" > params< / span > < span class = "op" > |< / span > { < span class = "comment" > // < - url encoded parameters< / span >
< span class = "macro" > println< / span > < span class = "macro" > !< / span > (< span class = "string" > " ==== BODY ==== {:?}" < / span > , < span class = "ident" > params< / span > );
< span class = "prelude-val" > Ok< / span > (< span class = "ident" > HttpResponse< / span > ::< span class = "prelude-val" > Ok< / span > ().< span class = "ident" > into< / span > ())
}),
)
}< / pre >
2018-10-10 17:38:33 +02:00
< / div > < h3 id = 'method.json' class = 'method' > < span id = 'json.v' class = 'invisible' > < code > fn < a href = '#method.json' class = 'fnname' > json< / a > < T: < a class = "trait" href = "https://docs.rs/serde/1.0.79/serde/de/trait.DeserializeOwned.html" title = "trait serde::de::DeserializeOwned" > DeserializeOwned< / a > > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.JsonBody.html" title = "struct actix_web::dev::JsonBody" > JsonBody< / a > < Self, T> < / code > < / span > < / h3 > < div class = 'docblock' > < p > Parse < code > application/json< / code > encoded body.
2018-07-21 13:09:47 +02:00
Return < code > JsonBody< T> < / code > future. It resolves to a < code > T< / code > value.< / p >
< p > Returns error:< / p >
< ul >
< li > content type is not < code > application/json< / code > < / li >
< li > content length is greater than 256k< / li >
< / ul >
< h2 id = "server-example-2" class = "section-header" > < a href = "#server-example-2" > Server example< / a > < / h2 >
< pre class = "rust rust-example-rendered" >
< span class = "kw" > use< / span > < span class = "ident" > actix_web< / span > ::< span class = "kw-2" > *< / span > ;
< span class = "kw" > use< / span > < span class = "ident" > futures< / span > ::< span class = "ident" > future< / span > ::{< span class = "ident" > ok< / span > , < span class = "ident" > Future< / span > };
< span class = "attribute" > #[< span class = "ident" > derive< / span > (< span class = "ident" > Deserialize< / span > , < span class = "ident" > Debug< / span > )]< / span >
< span class = "kw" > struct< / span > < span class = "ident" > MyObj< / span > {
< span class = "ident" > name< / span > : < span class = "ident" > String< / span > ,
}
< span class = "kw" > fn< / span > < span class = "ident" > index< / span > (< span class = "kw-2" > mut< / span > < span class = "ident" > req< / span > : < span class = "ident" > HttpRequest< / span > ) < span class = "op" > -> < / span > < span class = "ident" > Box< / span > < span class = "op" > < < / span > < span class = "ident" > Future< / span > < span class = "op" > < < / span > < span class = "ident" > Item< / span > < span class = "op" > =< / span > < span class = "ident" > HttpResponse< / span > , < span class = "ident" > Error< / span > < span class = "op" > =< / span > < span class = "ident" > Error< / span > < span class = "op" > > > < / span > {
< span class = "ident" > req< / span > .< span class = "ident" > json< / span > () < span class = "comment" > // < - get JsonBody future< / span >
.< span class = "ident" > from_err< / span > ()
.< span class = "ident" > and_then< / span > (< span class = "op" > |< / span > < span class = "ident" > val< / span > : < span class = "ident" > MyObj< / span > < span class = "op" > |< / span > { < span class = "comment" > // < - deserialized value< / span >
< span class = "macro" > println< / span > < span class = "macro" > !< / span > (< span class = "string" > " ==== BODY ==== {:?}" < / span > , < span class = "ident" > val< / span > );
< span class = "prelude-val" > Ok< / span > (< span class = "ident" > HttpResponse< / span > ::< span class = "prelude-val" > Ok< / span > ().< span class = "ident" > into< / span > ())
}).< span class = "ident" > responder< / span > ()
}< / pre >
< / div > < h3 id = 'method.multipart' class = 'method' > < span id = 'multipart.v' class = 'invisible' > < code > fn < a href = '#method.multipart' class = 'fnname' > multipart< / a > (& self) -> < a class = "struct" href = "../actix_web/multipart/struct.Multipart.html" title = "struct actix_web::multipart::Multipart" > Multipart< / a > < Self::< a class = "type" href = "../actix_web/trait.HttpMessage.html#associatedtype.Stream" title = "type actix_web::HttpMessage::Stream" > Stream< / a > > < / code > < / span > < / h3 > < div class = 'docblock' > < p > Return stream to http payload processes as multipart.< / p >
< p > Content-type: multipart/form-data;< / p >
< h2 id = "server-example-3" class = "section-header" > < a href = "#server-example-3" > Server example< / a > < / h2 >
< pre class = "rust rust-example-rendered" >
< span class = "kw" > fn< / span > < span class = "ident" > index< / span > (< span class = "kw-2" > mut< / span > < span class = "ident" > req< / span > : < span class = "ident" > HttpRequest< / span > ) < span class = "op" > -> < / span > < span class = "ident" > Box< / span > < span class = "op" > < < / span > < span class = "ident" > Future< / span > < span class = "op" > < < / span > < span class = "ident" > Item< / span > < span class = "op" > =< / span > < span class = "ident" > HttpResponse< / span > , < span class = "ident" > Error< / span > < span class = "op" > =< / span > < span class = "ident" > Error< / span > < span class = "op" > > > < / span > {
< span class = "ident" > req< / span > .< span class = "ident" > multipart< / span > ().< span class = "ident" > from_err< / span > () < span class = "comment" > // < - get multipart stream for current request< / span >
.< span class = "ident" > and_then< / span > (< span class = "op" > |< / span > < span class = "ident" > item< / span > < span class = "op" > |< / span > < span class = "kw" > match< / span > < span class = "ident" > item< / span > { < span class = "comment" > // < - iterate over multipart items< / span >
< span class = "ident" > multipart< / span > ::< span class = "ident" > MultipartItem< / span > ::< span class = "ident" > Field< / span > (< span class = "ident" > field< / span > ) < span class = "op" > => < / span > {
< span class = "comment" > // Field in turn is stream of *Bytes* object< / span >
< span class = "ident" > Either< / span > ::< span class = "ident" > A< / span > (< span class = "ident" > field< / span > .< span class = "ident" > from_err< / span > ()
.< span class = "ident" > map< / span > (< span class = "op" > |< / span > < span class = "ident" > c< / span > < span class = "op" > |< / span > < span class = "macro" > println< / span > < span class = "macro" > !< / span > (< span class = "string" > " -- CHUNK: \n{:?}" < / span > , < span class = "ident" > str< / span > ::< span class = "ident" > from_utf8< / span > (< span class = "kw-2" > & < / span > < span class = "ident" > c< / span > )))
.< span class = "ident" > finish< / span > ())
},
< span class = "ident" > multipart< / span > ::< span class = "ident" > MultipartItem< / span > ::< span class = "ident" > Nested< / span > (< span class = "ident" > mp< / span > ) < span class = "op" > => < / span > {
< span class = "comment" > // Or item could be nested Multipart stream< / span >
< span class = "ident" > Either< / span > ::< span class = "ident" > B< / span > (< span class = "ident" > ok< / span > (()))
}
})
.< span class = "ident" > finish< / span > () < span class = "comment" > // < - Stream::finish() combinator from actix< / span >
.< span class = "ident" > map< / span > (< span class = "op" > |< / span > < span class = "kw" > _< / span > < span class = "op" > |< / span > < span class = "ident" > HttpResponse< / span > ::< span class = "prelude-val" > Ok< / span > ().< span class = "ident" > into< / span > ())
.< span class = "ident" > responder< / span > ()
}< / pre >
2018-10-10 17:38:33 +02:00
< / div > < h3 id = 'method.readlines' class = 'method' > < span id = 'readlines.v' class = 'invisible' > < code > fn < a href = '#method.readlines' class = 'fnname' > readlines< / a > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.Readlines.html" title = "struct actix_web::dev::Readlines" > Readlines< / a > < Self> < / code > < / span > < / h3 > < div class = 'docblock' > < p > Return stream of lines.< / p >
< / div > < / div > < h2 id = 'implementors' class = 'small-section-header' > Implementors< a href = '#implementors' class = 'anchor' > < / a > < / h2 > < div class = 'item-list' id = 'implementors-list' > < h3 id = 'impl-HttpMessage' class = 'impl' > < span class = 'in-band' > < table class = 'table-display' > < tbody > < tr > < td > < code > impl HttpMessage for < a class = "struct" href = "../actix_web/client/struct.ClientResponse.html" title = "struct actix_web::client::ClientResponse" > ClientResponse< / a > < / code > < a href = '#impl-HttpMessage' class = 'anchor' > < / a > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/client/response.rs.html#34-50' title = 'goto source code' > [src]< / a > < / span > < / td > < / tr > < / tbody > < / table > < / h3 > < div class = 'impl-items' > < h4 id = 'associatedtype.Stream-1' class = "type" > < span id = 'Stream.t-1' class = 'invisible' > < code > type < a href = '#associatedtype.Stream-1' class = "type" > Stream< / a > = < a class = "struct" href = "https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title = "struct alloc::boxed::Box" > Box< / a > < Pipeline> < / code > < / span > < / h4 >
< h4 id = 'method.headers' class = "method" > < span id = 'headers.v-1' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '#method.headers' class = 'fnname' > headers< / a > (& self) -> & < a class = "struct" href = "../actix_web/http/header/struct.HeaderMap.html" title = "struct actix_web::http::header::HeaderMap" > HeaderMap< / a > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/client/response.rs.html#39-41' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < div class = 'docblock' > < p > Get the headers from the response.< / p >
< / div > < h4 id = 'method.payload' class = "method" > < span id = 'payload.v-1' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '#method.payload' class = 'fnname' > payload< / a > (& self) -> < a class = "struct" href = "https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title = "struct alloc::boxed::Box" > Box< / a > < Pipeline> < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/client/response.rs.html#44-49' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.content_type-1' class = "method" > < span id = 'content_type.v-1' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.content_type' class = 'fnname' > content_type< / a > (& self) -> & < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.str.html" > str< / a > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#46-53' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.encoding-1' class = "method" > < span id = 'encoding.v-1' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.encoding' class = 'fnname' > encoding< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < EncodingRef, < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#58-72' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.mime_type-1' class = "method" > < span id = 'mime_type.v-1' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.mime_type' class = 'fnname' > mime_type< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title = "enum core::option::Option" > Option< / a > < < a class = "struct" href = "https://docs.rs/mime/0.3.9/mime/struct.Mime.html" title = "struct mime::Mime" > Mime< / a > > , < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#75-87' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.chunked-1' class = "method" > < span id = 'chunked.v-1' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.chunked' class = 'fnname' > chunked< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.bool.html" > bool< / a > , < a class = "enum" href = "../actix_web/error/enum.ParseError.html" title = "enum actix_web::error::ParseError" > ParseError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#90-100' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.body-1' class = "method" > < span id = 'body.v-1' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.body' class = 'fnname' > body< / a > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.MessageBody.html" title = "struct actix_web::dev::MessageBody" > MessageBody< / a > < Self> < / code > < / span > < / td > < td > < span class = 'out-of-ban
< h4 id = 'method.headers-1' class = "method" > < span id = 'headers.v-2' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '#method.headers-1' class = 'fnname' > headers< / a > (& self) -> & < a class = "struct" href = "../actix_web/http/header/struct.HeaderMap.html" title = "struct actix_web::http::header::HeaderMap" > HeaderMap< / a > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/server/message.rs.html#57-59' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.payload-1' class = "method" > < span id = 'payload.v-2' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '#method.payload-1' class = 'fnname' > payload< / a > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.Payload.html" title = "struct actix_web::dev::Payload" > Payload< / a > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/server/message.rs.html#62-68' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.content_type-2' class = "method" > < span id = 'content_type.v-2' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.content_type' class = 'fnname' > content_type< / a > (& self) -> & < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.str.html" > str< / a > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#46-53' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.encoding-2' class = "method" > < span id = 'encoding.v-2' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.encoding' class = 'fnname' > encoding< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < EncodingRef, < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#58-72' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.mime_type-2' class = "method" > < span id = 'mime_type.v-2' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.mime_type' class = 'fnname' > mime_type< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title = "enum core::option::Option" > Option< / a > < < a class = "struct" href = "https://docs.rs/mime/0.3.9/mime/struct.Mime.html" title = "struct mime::Mime" > Mime< / a > > , < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#75-87' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.chunked-2' class = "method" > < span id = 'chunked.v-2' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.chunked' class = 'fnname' > chunked< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.bool.html" > bool< / a > , < a class = "enum" href = "../actix_web/error/enum.ParseError.html" title = "enum actix_web::error::ParseError" > ParseError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' hr
< h4 id = 'method.headers-2' class = "method" > < span id = 'headers.v-3' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '#method.headers-2' class = 'fnname' > headers< / a > (& self) -> & < a class = "struct" href = "../actix_web/http/header/struct.HeaderMap.html" title = "struct actix_web::http::header::HeaderMap" > HeaderMap< / a > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httprequest.rs.html#40-42' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.payload-2' class = "method" > < span id = 'payload.v-3' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '#method.payload-2' class = 'fnname' > payload< / a > (& self) -> < a class = "struct" href = "../actix_web/dev/struct.Payload.html" title = "struct actix_web::dev::Payload" > Payload< / a > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httprequest.rs.html#45-51' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.content_type-3' class = "method" > < span id = 'content_type.v-3' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.content_type' class = 'fnname' > content_type< / a > (& self) -> & < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.str.html" > str< / a > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#46-53' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.encoding-3' class = "method" > < span id = 'encoding.v-3' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.encoding' class = 'fnname' > encoding< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < EncodingRef, < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#58-72' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.mime_type-3' class = "method" > < span id = 'mime_type.v-3' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.mime_type' class = 'fnname' > mime_type< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title = "enum core::option::Option" > Option< / a > < < a class = "struct" href = "https://docs.rs/mime/0.3.9/mime/struct.Mime.html" title = "struct mime::Mime" > Mime< / a > > , < a class = "enum" href = "../actix_web/error/enum.ContentTypeError.html" title = "enum actix_web::error::ContentTypeError" > ContentTypeError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '../src/actix_web/httpmessage.rs.html#75-87' title = 'goto source code' > [src]< / a > < / td > < / tr > < / tbody > < / table > < / span > < / h4 > < h4 id = 'method.chunked-3' class = "method" > < span id = 'chunked.v-3' class = 'invisible' > < table class = 'table-display' > < tbody > < tr > < td > < code > fn < a href = '../actix_web/trait.HttpMessage.html#method.chunked' class = 'fnname' > chunked< / a > (& self) -> < a class = "enum" href = "https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title = "enum core::result::Result" > Result< / a > < < a class = "primitive" href = "https://doc.rust-lang.org/nightly/std/primitive.bool.html" > bool< / a > , < a class = "enum" href = "../actix_web/error/enum.ParseError.html" title = "enum actix_web::error::ParseError" > ParseError< / a > > < / code > < / span > < / td > < td > < span class = 'out-of-band' > < div class = 'ghost' > < / div > < a class = 'srclink' href = '..
2018-07-21 13:09:47 +02:00
src="../implementors/actix_web/trait.HttpMessage.js">
< / script > < / section > < section id = "search" class = "content hidden" > < / section > < section class = "footer" > < / section > < aside id = "help" class = "hidden" > < div > < h1 class = "hidden" > Help< / h1 > < div class = "shortcuts" > < h2 > Keyboard Shortcuts< / h2 > < dl > < dt > < kbd > ?< / kbd > < / dt > < dd > Show this help dialog< / dd > < dt > < kbd > S< / kbd > < / dt > < dd > Focus the search field< / dd > < dt > < kbd > ↑< / kbd > < / dt > < dd > Move up in search results< / dd > < dt > < kbd > ↓< / kbd > < / dt > < dd > Move down in search results< / dd > < dt > < kbd > ↹< / kbd > < / dt > < dd > Switch tab< / dd > < dt > < kbd > ⏎ < / kbd > < / dt > < dd > Go to active search result< / dd > < dt > < kbd > +< / kbd > < / dt > < dd > Expand all sections< / dd > < dt > < kbd > -< / kbd > < / dt > < dd > Collapse all sections< / dd > < / dl > < / div > < div class = "infos" > < h2 > Search Tricks< / h2 > < p > Prefix searches with a type followed by a colon (e.g. < code > fn:< / code > ) to restrict the search to a given type.< / p > < p > Accepted types are: < code > fn< / code > , < code > mod< / code > , < code > struct< / code > , < code > enum< / code > , < code > trait< / code > , < code > type< / code > , < code > macro< / code > , and < code > const< / code > .< / p > < p > Search functions by type signature (e.g. < code > vec -> usize< / code > or < code > * -> vec< / code > )< / p > < p > Search multiple things at once by splitting your query with comma (e.g. < code > str,u8< / code > or < code > String,struct:Vec,test< / code > )< / p > < / div > < / div > < / aside > < script > window . rootPath = "../" ; window . currentCrate = "actix_web" ; < / script > < script src = "../aliases.js" > < / script > < script src = "../main.js" > < / script > < script defer src = "../search-index.js" > < / script > < / body > < / html >