docs(headers): clarify TransferEncoding xor ContentLength
Update the docs for `Content-Length` and `Transfer-Encoding` to mention that they are mutually exclusive, and that setting one will unset the other, in accordance with RFC7230. Also expand the docs for `Request::set_body` to say that chunked encoding is used by default, and mention how to disable this feature.
This commit is contained in:
@@ -14,6 +14,13 @@ use header::{Header, Raw, parsing};
|
||||
/// body, the Content-Length indicates the size of the selected
|
||||
/// representation.
|
||||
///
|
||||
/// Note that setting this header will *remove* any previously set
|
||||
/// `Transfer-Encoding` header, in accordance with
|
||||
/// [RFC7230](http://tools.ietf.org/html/rfc7230#section-3.3.2):
|
||||
///
|
||||
/// > A sender MUST NOT send a Content-Length header field in any message
|
||||
/// that > contains a Transfer-Encoding header field.
|
||||
///
|
||||
/// # ABNF
|
||||
/// ```plain
|
||||
/// Content-Length = 1*DIGIT
|
||||
|
||||
@@ -8,6 +8,13 @@ header! {
|
||||
/// corresponding to the sequence of transfer codings that have been (or
|
||||
/// will be) applied to the payload body in order to form the message
|
||||
/// body.
|
||||
///
|
||||
/// Note that setting this header will *remove* any previously set
|
||||
/// `Content-Length` header, in accordance with
|
||||
/// [RFC7230](http://tools.ietf.org/html/rfc7230#section-3.3.2):
|
||||
///
|
||||
/// > A sender MUST NOT send a Content-Length header field in any message
|
||||
/// > that contains a Transfer-Encoding header field.
|
||||
///
|
||||
/// # ABNF
|
||||
/// ```plain
|
||||
|
||||
@@ -91,6 +91,10 @@ impl<B> Request<B> {
|
||||
pub fn set_version(&mut self, version: HttpVersion) { self.version = version; }
|
||||
|
||||
/// Set the body of the request.
|
||||
///
|
||||
/// By default, the body will be sent using `Transfer-Encoding: chunked`. To
|
||||
/// override this behavior, manually set a [`ContentLength`] header with the
|
||||
/// length of `body`.
|
||||
#[inline]
|
||||
pub fn set_body<T: Into<B>>(&mut self, body: T) { self.body = Some(body.into()); }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user