mirror of https://github.com/fafhrd91/actix-web
Add .insert() to HttpResponseBuilder
This commit is contained in:
parent
1ac9144237
commit
2fc37d8d55
|
@ -426,6 +426,38 @@ impl HttpResponseBuilder {
|
|||
}
|
||||
self
|
||||
}
|
||||
/// Set or replace a header with a single value.
|
||||
///
|
||||
/// ```rust
|
||||
/// # extern crate actix_web;
|
||||
/// use actix_web::{http, HttpRequest, HttpResponse};
|
||||
///
|
||||
/// fn index(req: HttpRequest) -> HttpResponse {
|
||||
/// HttpResponse::Ok()
|
||||
/// .insert("X-TEST", "value")
|
||||
/// .insert(http::header::CONTENT_TYPE, "application/json")
|
||||
/// .finish()
|
||||
/// }
|
||||
/// fn main() {}
|
||||
/// ```
|
||||
pub fn insert<K, V>(&mut self, key: K, value: V) -> &mut Self
|
||||
where
|
||||
HeaderName: HttpTryFrom<K>,
|
||||
V: IntoHeaderValue,
|
||||
{
|
||||
if let Some(parts) = parts(&mut self.response, &self.err) {
|
||||
match HeaderName::try_from(key) {
|
||||
Ok(key) => match value.try_into() {
|
||||
Ok(value) => {
|
||||
parts.headers.insert(key, value);
|
||||
}
|
||||
Err(e) => self.err = Some(e.into()),
|
||||
},
|
||||
Err(e) => self.err = Some(e.into()),
|
||||
};
|
||||
}
|
||||
self
|
||||
}
|
||||
|
||||
/// Remove all instances of a header already set on this `HttpResponseBuilder`.
|
||||
///
|
||||
|
@ -1155,6 +1187,15 @@ mod tests {
|
|||
assert_eq!(resp.status(), StatusCode::OK);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_insert() {
|
||||
let resp = HttpResponse::Ok()
|
||||
.insert("deleteme", "old value")
|
||||
.insert("deleteme", "new value")
|
||||
.finish();
|
||||
assert_eq!("new value", resp.headers().get("deleteme").expect("new value"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_remove() {
|
||||
let resp = HttpResponse::Ok()
|
||||
|
|
Loading…
Reference in New Issue